Bash: переменное расширение в отдельной цитате/двойной цитате

Я хочу добавить переменную ${date} в следующий bash script:

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

Очевидно, что ${date} не будет расширяться в одиночной кавычке, , пожалуйста, также обратите внимание, что есть двойная кавычка за пределами одиночной кавычки, что делает ее еще более сложной.

Большое спасибо. Я на CentOS 6.

Ответ 1

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

Ответ 2

Твой ${date} БУДЕТ РАСПРОСТРАНЯТЬ. Как вы сами сказали, вы окружите всю строку двойными кавычками, а bash расширит переменные на двойные кавычки.

Тот факт, что есть внутренние одинарные кавычки, вообще не имеет значения:

[email protected] ~ $ ritchie="Goodbye world"
[email protected] ~ $ echo "When Dennis passed away, he said '$ritchie'"
When Dennis passed away, he said 'Goodbye world'