x264: 忽略 bash 脚本中的空选项

x264: ignore empty options in bash script

我使用 x264 脚本进行了一些视频编码。大多数选项遵循模式

x264 --option0 $value0 --option1 $value1 -o output.file input.file

脚本从文本文件中读取值。文本文件包含键值,如 crf=18.3。不幸的是,这对 mb-tree 不起作用,因为该选项没有 $value,它是默认设置的,可以使用 --no-mbtree.

关闭

如果在文本文件中设置mbtree=no-mbtree,一切正常。但是,如果我选择在打开 mbtree 的情况下进行编码,--$variable-for-mb-tree-or-no-mb-tree 仍然存在,但未设置或为空并且 x264 会引发错误。

如何告诉 bash/ x264 忽略未设置或空的变量?我想避免 if...then...else 而是内联。

您可以在参数扩展中使用替代值:

mycommand ${myvar:+ "--$myvar"}

如果myvar=foo,这将运行mycommand --foo

如果 myvar 未设置或为空,它将 运行 mycommand 没有标志。