我有一个很长的命令,我想在某种情况下修改它,使其包含或不包含选项。
例如。

java -jar compiler.jar --externs "$externs"
    --foo "another" --bar "more"

如果--externs "$externs"为空,我希望$externs被完全忽略。在bash中,如果不使用字符串构建整个命令,有什么方法可以做到这一点吗?

最佳答案

这就是${key:+WORDS}扩展的目的:

java ... ${externs:+--externs "$externs"}

使用数组也是一种常见的习惯用法:
args=( )
if [[ $externs ]]; then
  args+=( --externs "$externs" )
fi

java ... "${args[@]}"

关于bash - 有条件地省略bash中的命令行选项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34144681/

10-11 22:05