如何在命令中正确地引用字符串替换?

时间:2016-01-13 01:38:12

标签: string bash ffmpeg command substitution

我正在尝试使用bash将生成的过滤器链传递给ffmpeg,如下所示:

FILTER="-filter_complex \"...\""
ffmpeg -i ... $FILTER ...

然而,ffmpeg并不喜欢这样,告诉我

  

没有这样的过滤器:'''

那么,我如何正确设置变量以进行适当的替换呢?

1 个答案:

答案 0 :(得分:1)

您需要将-filter_complex...部分作为两个单独的参数传递,但是您需要...部分保持不变(作为单个参数 - 不要用空格分割,没有经过文件名扩展等。)。

实现这一目标的最佳方法是使用数组,然后在双引号内使用${arrayname[@]}表示法扩展它:

FILTER=(-filter_complex '...')
ffmpeg -i ... "${FILTER[@]}" ...