0

我写了一个if语句的形式:

if [ -n "${VAR:-x}" ]; then
   #do something
   export VAR=#something
fi

我的 shell 脚本两次调用此语句,并且令人惊讶地通过了两次条件。

[提示(也许......):这个确切的代码在包含文件的函数中重复。if 语句在函数调用之前首先被评估。当函数被调用时,它“再次”被评估。]

这是怎么回事?我是否错误地理解了 -x 标志?

谢谢!

4

1 回答 1

4

${VAR:-x}表示如果VAR未设置替换字符串,x否则替换 的值VAR

类似地,如果未按照此处所述${FOO:-bar}设置,则表示替换的值FOO或字符串。barFOO

这意味着-n "${VAR:-x}"将始终为真,因为-n意味着检查是否不为空并且"${VAR:-x}"永远不会为空。

于 2009-05-28T10:56:49.400 回答