Bash: переменное расширение в одинарных / двойных кавычках - PullRequest
12 голосов
/ 22 декабря 2011

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

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

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

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

Ответы [ 2 ]

11 голосов
/ 22 декабря 2011

${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
5 голосов
/ 22 декабря 2011

Ваш ${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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...