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'