如何使用扩展为可变数量参数组件的变量对参数进行编码
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[@]}" ...
这是一个关于参数扩展的非常基本的问题。例如,这里有两种形式的 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[@]}" ...