惯用bash:设置变量的默认值

时间:2014-02-13 08:46:23

标签: bash idiomatic

如何以简洁,惯用的方式为bash变量设置默认值?这看起来很难看:

if [[ ! -z "$1" ]]; then
    option="$1"
else
    option="default"
fi

3 个答案:

答案 0 :(得分:5)

default value               : ${parameter:-word} \
assign default value        : ${parameter:=word}  |_ / if unset or null -
error if empty/unset        : ${parameter:?mesg}  |  \ use no ":" for unset only
use word unless empty/unset : ${parameter:+word} /

答案 1 :(得分:3)

您可以使用:

option=${1:-default}

如果给出第一个命令行参数且不为null,则将此选项设置为第一个命令行参数。否则,它将选项设置为默认值。有关参数扩展的详细信息以及此表单的一些有用变体,请参阅Bash reference manual

答案 2 :(得分:0)

对于使用其他而不是分配Toxaris已经涵盖的默认值,值得一提的是-z存在反向测试,因此不是

if [[ ! -z "$1" ]]; then
    do_something
fi

你可以简单地写一下:

if [ -n "$1" ]; then
    do_something
fi

如果没有else分支,您可以将其缩短为:

[ -n "$1" ] && do_something