为什么需要“$ {1: - }”?

时间:2013-11-19 08:19:29

标签: bash

阅读这个简单的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值?如果我的理解是错误的,请纠正我。谢谢!

1 个答案:

答案 0 :(得分:8)

一个可能的原因是与-u兼容,这是一个有用的shell标志 每当变量/参数未绑定时发出错误信号。

$ set -u
$ echo ${1:-}

$ echo $1
bash: $1: unbound variable