繁体   English   中英

Bash-在脚本中执行命令,将单引号添加到包含空格的变量中

[英]Bash - Executing a command in a script adding single quotes to a variable containing spaces

我正在编写一个脚本,该脚本执行所有必要的命令以训练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”是其他变量)。

使用此行运行脚本后,我收到一条通知,指出该字体不能识别,尽管当我在控制台中“手动”执行该字体时效果很好。 使用set -xset +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

到外壳程序,发生的事情是外壳text2image使用以下四个参数调用命令text2image :-- text2image --text=trainingFile.txt
--outputbase=eng.DejaVuSansBold.exp0
--font=DejaVu Sans Bold ,-- --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

如果将字体作为参数传递给脚本,则可以执行以下操作:

font=$1
text2image ... --font="$1" ...

如果要更动态地构建命令,则可能需要执行其他操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM