Bash 在``命令中展开一个变量
我找不到我正在做的事情的确切参考资料 我有以下脚本,它不会在命令中展开变量:Bash 在``命令中展开一个变量,bash,Bash,我找不到我正在做的事情的确切参考资料 我有以下脚本,它不会在命令中展开变量: #!/bin/bash name="my name" `convert -pointsize 250 -font /usr/share/fonts/truetype/msttcorefonts/impact.ttf -fill black -draw 'text 330,900 "$name"' tag.jpg name_my.jpg` 这将导致图像的文本为$name,而不是name的内容 实际上,我需要从文件中读
#!/bin/bash
name="my name"
`convert -pointsize 250 -font /usr/share/fonts/truetype/msttcorefonts/impact.ttf -fill black -draw 'text 330,900 "$name"' tag.jpg name_my.jpg`
这将导致图像的文本为$name,而不是name的内容
实际上,我需要从文件中读取行并在每个名称上运行命令,因此我真正的脚本是(有相同的问题):
arr=(`cat names.txt`)
对于((i=0;i您的问题是单引号('
)而不是反引号。因为$name
在它们内部,所以它不会被展开。相反,您应该使用双引号,并且可以像这样转义内部引号:
`convert -pointsize 250 -font /usr/share/fonts/truetype/msttcorefonts/impact.ttf -fill black -draw "text 330,900 \"$name\"" tag.jpg name_my.jpg`
您的问题是单引号('
)而不是反引号。因为$name
在它们里面,所以它不会被展开。相反,您应该使用双引号,并且可以像这样转义内部引号:
`convert -pointsize 250 -font /usr/share/fonts/truetype/msttcorefonts/impact.ttf -fill black -draw "text 330,900 \"$name\"" tag.jpg name_my.jpg`
你有逃跑的问题。
请使用带反斜杠的正确转义,或者确保$arg不受单引号的“保护”。
e、 g
为了更好地了解发生了什么,尝试将问题分解为多个较小的问题。
e、 g.在convert中使用“draw”命令之前,创建包含所有展开的“draw”命令
name="my name"
draw="text 330, 900 '"${name}"'"
convert -pointsize 250 -fill black -draw "${draw}" tag.jpg name_my.jpg
你有逃跑的问题。
请使用带反斜杠的正确转义,或者确保$arg不受单引号的“保护”。
e、 g
为了更好地了解发生了什么,尝试将问题分解为多个较小的问题。
e、 g.在convert中使用“draw”命令之前,创建包含所有展开的“draw”命令
name="my name"
draw="text 330, 900 '"${name}"'"
convert -pointsize 250 -fill black -draw "${draw}" tag.jpg name_my.jpg
我知道我的问题是一个基本问题,但出于某种原因,只是将你的解决方案只生成“\”作为文本我知道我的问题是一个基本问题,但出于某种原因,只是将你的解决方案只生成“\”作为文本在你的示例中运行convert
,根本不需要反勾号。它是否显示了我多久没有碰过它了他的?:)这是我在大学里被教写Bash的方式……我在某个地方读到它支持Bourne Shell
…在你的例子中运行convert
,你根本不需要反勾号。它是否显示了我在大学里写Bash有多久了?:)这是我在大学里被教写Bash的方式。。。我在某个地方读到它支持Bourne Shell
。。。