我正在编写一个脚本,它执行所有必要的命令来训练一种tesseract语言,并且我希望接收一个字体作为参数(例如: DejaVu Sans )并执行这个命令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。我不知道如何避免因空格而增加的引号.
有人能帮我吗?
发布于 2016-08-08 11:44:15
明确要执行的命令。当你打字时
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" ...如果要更动态地构造命令,则可能需要执行其他操作。
https://stackoverflow.com/questions/38827067
复制相似问题