Bash:单引号/双引号中的可变扩展

时间:2011-12-22 08:04:34

标签: linux bash variables syntax ffmpeg

我想在以下bash脚本中添加变量${date}

ffmpeg -i in.flv -vf drawtext="fontfile=Sans.ttf:text='Today is ${date}':fontsize=6" out.flv

显然,${date}不会在单引号中扩展,请注意,单引号后面会有双引号,这会使其更加复杂。

非常感谢。我在CentOS 6上。

2 个答案:

答案 0 :(得分:11)

${date}被扩展,因为它在双引号之间(双引号内的单引号只是字符)

用以下方法测试:

$ export date=SOMEVALUE
$ echo ffmpeg -i in.flv -vf drawtext="fontfile=/usr/share/fonts/dejavu/DejaVuLGCSans.ttf:text='Today is ${date}':fontsize=6" out.flv
ffmpeg -i in.flv -vf drawtext=fontfile=/usr/share/fonts/dejavu/DejaVuLGCSans.ttf:text='Today is SOMEVALUE':fontsize=6 out.flv

答案 1 :(得分:4)

您的${date}会正确扩展。正如你自己所说,你用双引号括起整个字符串,而bash 扩展为双引号。

内部单引号的事实根本不重要:

fg@erwin ~ $ ritchie="Goodbye world"
fg@erwin ~ $ echo "When Dennis passed away, he said '$ritchie'"
When Dennis passed away, he said 'Goodbye world'