Это очень простой вопрос о расширении параметров. В качестве примера, здесь две формы параметра звукового кодека для команды FFmpeg:Как закодировать параметр с переменной, которая расширяется в переменное число компонентов параметров
Форма 1:
ffmpeg ... -acodec copy ...
Форма 2:
ffmpeg ... -an ...
Я хотел бы выразить параметр и (для формы 1) его значение как переменную или переменные, которые будут работать в обоих сценариях.
Это работает для формы 1:
param1="-acodec"
param2="copy"
ffmpeg ... "$param1" "$param2" ...
, но это не работает:
param="-acodec copy"
ffmpeg ... "$param" ...
и не делает эту работу:
param1="-acodec"
param2=" copy"
ffmpeg ... "$param1$param2"
С другой стороны, это работает для формы 2 :
param="-an"
ffmpeg ... "$param" ...
и это работает:
param1="-an"
param2=""
ffmpeg ... "$param1$param2"
, но это, очевидно, не работает из-за дополнительного символа пробела:
param1="-an"
param2=""
ffmpeg ... "$param1" "$param2" ...
Есть одно выражение, которое работает для обеих форм параметра?
Это прекрасно работает в моем первоначальном тестировании. Спасибо! – scolfax
Для других новичков, подобных мне, я обнаружил, что могу добавить дополнительные параметры следующим образом (продолжение с текущим примером ffmpeg): param + = (- vcodec libx264); param + = (- ar 48000); и т. д. Одно выражение «$ {param [@]}» будет соответствующим образом расширять все параметры. Еще раз спасибо за очень полезный совет, chepner. – scolfax