阅读这个简单的bash函数后,我有点困惑:
log_daemon_msg() {
if [ -z ${1:-} ]; then
return 1
fi
echo $@
}
根据man 1 bash
,其中说:
$ {参数:-word}
Use Default Values. If parameter is unset or null, the expansion of word is substituted. Otherwise, the value of parameter is substituted.
如果$1
为NULL或未设置,则$1
的值为NULL。这就是我的困惑来自:为什么即使事实$1
为NULL或未设置已知,有必要为$ 1分配一个NULL值?如果我的理解是错误的,请纠正我。谢谢!
答案 0 :(得分:8)
一个可能的原因是与-u
兼容,这是一个有用的shell标志
每当变量/参数未绑定时发出错误信号。
$ set -u
$ echo ${1:-}
$ echo $1
bash: $1: unbound variable