首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash -在脚本中执行命令,将单引号添加到包含空格的变量中

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

Stack Overflow用户
提问于 2016-08-08 10:38:33
回答 1查看 255关注 0票数 0

我正在编写一个脚本,它执行所有必要的命令来训练一种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 -xset +x,(脚本的行)如下所示:text2image --text=contentTraint.txt --outputbase=gdfdd.DejaVuSansBold.exp0 '--font='\''DejaVu Sans Bold'\''' --fonts_dir=/usr/share/fonts。我不知道如何避免因空格而增加的引号.

有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-08 11:44:15

明确要执行的命令。当你打字时

代码语言:javascript
复制
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中有字体名,则可以:

代码语言:javascript
复制
text2image --text=trainingFile.txt --outputbase=eng.DejaVuSansBold.exp0 \
    --font="$font" --fonts_dir=/usr/share/fonts

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

代码语言:javascript
复制
font=$1
text2image ... --font="$1" ...

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38827067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档