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

Sus*_*yer 12 linux variables syntax bash ffmpeg

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

ffmpeg -i in.flv -vf drawtext="fontfile=Sans.ttf:text='Today is ${date}':fontsize=6" out.flv
Run Code Online (Sandbox Code Playgroud)

显然,${date}单引号不会扩展,请注意单引号后面有双引号,这使得它更加复杂.

非常感谢.我在CentOS 6上.

Mat*_*teo 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
Run Code Online (Sandbox Code Playgroud)


fge*_*fge 5

您的${date}WILL将正确展开。正如您自己说的那样,您将整个字符串用双引号引起来,bash 会将变量扩展为双引号。

内含单引号的事实一点都不重要:

fg@erwin ~ $ ritchie="Goodbye world"
fg@erwin ~ $ echo "When Dennis passed away, he said '$ritchie'"
When Dennis passed away, he said 'Goodbye world'
Run Code Online (Sandbox Code Playgroud)