如何使用扩展为可变数量的参数组件的变量对参数进行编码

时间:2016-12-19 19:07:20

标签: bash parameters expansion

这是关于参数扩展的一个非常基本的问题。举例来说,这里有两种形式的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" ...

是否有一个表达式适用于两种形式的参数?

1 个答案:

答案 0 :(得分:1)

使用数组。

# Pick one.
# param=(-acodec copy)
# param=(-an)

ffmpeg ... "${param[@]}" ...