如何在命令中正确引用字符串进行替换?
How to correctly enquote string for substitution in command?
我正在尝试使用 bash 将生成的过滤器链传递给 ffmpeg,如下所示:
FILTER="-filter_complex \"...\""
ffmpeg -i ... $FILTER ...
然而ffmpeg不喜欢这样,告诉我
No such filter: '"'
那么,如何正确设置变量以进行适当的替换?
您需要 -filter_complex
和 ...
部分作为两个单独的参数传递,但您需要 ...
部分保持完整(作为单个参数 - 不被分割空白,不接受 filename-expansion,等等)。
最好的方法是使用一个数组,然后在 double-quotes:
中使用 ${arrayname[@]}
符号来扩展它
FILTER=(-filter_complex '...')
ffmpeg -i ... "${FILTER[@]}" ...
我正在尝试使用 bash 将生成的过滤器链传递给 ffmpeg,如下所示:
FILTER="-filter_complex \"...\""
ffmpeg -i ... $FILTER ...
然而ffmpeg不喜欢这样,告诉我
No such filter: '"'
那么,如何正确设置变量以进行适当的替换?
您需要 -filter_complex
和 ...
部分作为两个单独的参数传递,但您需要 ...
部分保持完整(作为单个参数 - 不被分割空白,不接受 filename-expansion,等等)。
最好的方法是使用一个数组,然后在 double-quotes:
中使用${arrayname[@]}
符号来扩展它
FILTER=(-filter_complex '...')
ffmpeg -i ... "${FILTER[@]}" ...