我的目标是在存在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
虽然,这是唯一的选择吗?
答案 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[@]}"