我正在编写一个脚本来执行所有必要的命令来训练超正方体语言,我想接收一个字体作为参数(例如:DejaVu Sans Bold)并执行此命令text2image - -text=trainingFile.txt --outputbase=eng.DejaVuSansBold.exp0 --font='DejaVu Sans Bold' --fonts_dir=/usr/share/fonts
。请注意,--font='DejaVu Sans Bold'
的字体名称被单引号括起来。由于我收到字体作为参数,我需要添加引号并使用名称。
在一些不同的方法之后,我“最有效”的尝试是 text2image --text="${trainingTextFileName}"--outputbase="${languageCode}"."${fontNameWithoutBlanks}".exp0 -- font="'""${fontName}""'"--fonts_dir=/usr/share/fonts
但它仍然无法正常工作...(“languageCode”和“fontNameWithoutBlanks”是其他变量)。
在使用此行运行脚本后,我收到一条通知,指出该字体无法识别,尽管当我在控制台中“手动”执行它时它运行良好。
使用 set -x
和 set +x
行(脚本)如下所示:text2image --text=contentTraint.txt --outputbase=gdfdd。 DejaVuSansBold.exp0 '--font='\''DejaVu Sans Bold'\''' --fonts_dir=/usr/share/fonts
。我不知道如何摆脱因空格而添加的额外引号...
有人能帮帮我吗?
最佳答案
明确要执行的命令。当你打字时
text2image --text=trainingFile.txt --outputbase=eng.DejaVuSansBold.exp0 \
--font='DejaVu Sans Bold' --fonts_dir=/usr/share/fonts
对于 shell,发生的事情是 shell 使用 4 个参数调用命令 text2image
:
--text=trainingFile.txt
,
--outputbase=eng.DejaVuSansBold.exp0
,
--font=DejaVu Sans Bold
,
--fonts_dir=/usr/share/fonts
。
单引号的目的只是告诉 shell --font=DejaVu Sans Bold
只是一个参数。不过,为了回答您的问题,我们确实需要知道您是如何执行命令的(即,您需要显示一些代码)。如果你在变量 $font
中有字体名称,你可以这样做:
text2image --text=trainingFile.txt --outputbase=eng.DejaVuSansBold.exp0 \
--font="$font" --fonts_dir=/usr/share/fonts
如果字体作为参数传递给您的脚本,您可以:
font=$1
text2image ... --font="$1" ...
如果您要更加动态地构建命令,您可能需要做一些其他的事情。
关于linux - Bash - 在脚本中执行命令,将单引号添加到包含空格的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38827067/