6

如果存在 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

虽然,这是唯一的选择?

4

2 回答 2

9

使用 bash参数扩展

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

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

并且LANG=C man bash | less +/'Parameter Expansion'

于 2012-09-30T15:16:21.063 回答
1

您可以为此使用数组(请参阅Arrays):

args=( -a some_args )
if [ ... ] ; then
  args+=( -b "${VAR}" )
fi
bob "${args[@]}"
于 2012-09-30T15:06:41.923 回答