猛击“内联”条件

时间:2012-09-30 15:02:11

标签: bash conditional

我的目标是在存在bash变量的情况下为正在执行的程序添加一个参数,如下所示:

bob -a some_arg (( if we have ${VAR} defined add '-b ${VAR}' as an argument ))

我想避免像:

if [[ -z ${VAR} ]]; then
    bob -a some_arg
else
    bob -a some_arg -b ${VAR}
fi

虽然,这是唯一的选择吗?

2 个答案:

答案 0 :(得分:9)

使用bash 参数扩展

bob -a some_arg ${VAR:+-b "$VAR"}

一些好的文档:http://wiki.bash-hackers.org/syntax/pe

还有LANG=C man bash | less +/'Parameter Expansion'

答案 1 :(得分:2)

你可以使用一个数组(见Arrays):

args=( -a some_args )
if [ ... ] ; then
  args+=( -b "${VAR}" )
fi
bob "${args[@]}"