我正在编写一个脚本,执行所有必要的命令来训练一个tesseract语言,我希望收到一个字体作为参数(例如: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"是其他变量)。
使用此行运行脚本后,我收到一条通知,说明虽然在我执行该字体时效果很好,但字体仍然无法识别,并且#34;手动"在控制台中。
使用set -x
和set +x
(脚本)行如下所示:text2image --text=contentTraint.txt --outputbase=gdfdd.DejaVuSansBold.exp0 '--font='\''DejaVu Sans Bold'\''' --fonts_dir=/usr/share/fonts
。我不知道如何摆脱因为空格而增加的额外报价......
有人可以帮助我吗?
答案 0 :(得分:1)
清楚要执行的命令。当您键入
时var act = $("ul.nav > li:not(div.modal ul.nav > li)");
到shell,会发生的是shell调用带有4个参数的命令text2image --text=trainingFile.txt --outputbase=eng.DejaVuSansBold.exp0 \
--font='DejaVu Sans Bold' --fonts_dir=/usr/share/fonts
:
text2image
,
--text=trainingFile.txt
,
--outputbase=eng.DejaVuSansBold.exp0
,
--font=DejaVu Sans Bold
。
单引号的目的只是告诉shell --fonts_dir=/usr/share/fonts
只是一个参数。但是,为了回答您的问题,我们确实需要知道您是如何执行命令的(即,您需要显示一些代码)。如果变量--font=DejaVu Sans Bold
中有字体名称,则可以执行以下操作:
$font
如果字体作为参数传递给您的脚本,您可以执行以下操作:
text2image --text=trainingFile.txt --outputbase=eng.DejaVuSansBold.exp0 \
--font="$font" --fonts_dir=/usr/share/fonts
如果您更动态地构建命令,则可能需要执行其他操作。