我找不到我正在做的确切参考......
我有以下脚本不会扩展命令中的变量:
#!/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`)
for (( i=0; i<${len}; i+=2 ));
do
`convert -pointsize 250 -font /usr/share/fonts/truetype/msttcorefonts/impact.ttf -fill black -draw 'text 330,900 "$(${arr[i]} ${arr[i+1]})"' tag.jpg name_${arr[i]}.jpg`
done
答案 0 :(得分:2)
你的问题是单引号(''
)而不是反引号。由于$name
位于其中,因此不会展开。相反,你应该使用双引号,你可以像这样转义内部引号:
`convert -pointsize 250 -font /usr/share/fonts/truetype/msttcorefonts/impact.ttf -fill black -draw "text 330,900 \"$name\"" tag.jpg name_my.jpg`
答案 1 :(得分:1)
name="bla"
# using escape character \
value1="foo \"${name}\""
# putting single-quotes inside double-quotes
value2="foo '"${name}"'"
为了更好地了解发生了什么,请尝试将问题分解为多个较小的问题。 例如在转换
中使用之前,使用所有扩展创建“draw”命令name="my name"
draw="text 330, 900 '"${name}"'"
convert -pointsize 250 -fill black -draw "${draw}" tag.jpg name_my.jpg