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


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

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

明显, ${date} 不会扩大单引号, 另请注意,单引号后面会有双重报价,这使它变得更加复杂。

非常感谢。我在CentOS 6上。


10954
2017-12-22 08:04


起源



答案:


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

11
2017-12-22 08:08





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

4
2017-12-22 08:27