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

15

我希望在以下bash脚本中添加一个变量 ${date}

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

显然,在单引号中${date}不会被扩展,请注意单引号之外还有双引号,这使得问题更加复杂。

非常感谢。我使用的是CentOS 6。

2个回答

14

${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

6

您的${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'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接