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

How to code a parameter with a variable that expands into a variable number of parameter components

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

但这显然行不通,因为额外的 space 字符:

param1="-an"
param2=""
ffmpeg ... "$param1" "$param2" ...

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

使用数组。

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

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