我写了一个if语句的形式:
if [ -n "${VAR:-x}" ]; then
#do something
export VAR=#something
fi
我的 shell 脚本两次调用此语句,并且令人惊讶地通过了两次条件。
[提示(也许......):这个确切的代码在包含文件的函数中重复。if 语句在函数调用之前首先被评估。当函数被调用时,它“再次”被评估。]
这是怎么回事?我是否错误地理解了 -x 标志?
谢谢!
我写了一个if语句的形式:
if [ -n "${VAR:-x}" ]; then
#do something
export VAR=#something
fi
我的 shell 脚本两次调用此语句,并且令人惊讶地通过了两次条件。
[提示(也许......):这个确切的代码在包含文件的函数中重复。if 语句在函数调用之前首先被评估。当函数被调用时,它“再次”被评估。]
这是怎么回事?我是否错误地理解了 -x 标志?
谢谢!
${VAR:-x}表示如果VAR未设置替换字符串,x否则替换 的值VAR。
类似地,如果未按照此处所述${FOO:-bar}设置,则表示替换的值FOO或字符串。barFOO
这意味着-n "${VAR:-x}"将始终为真,因为-n意味着检查是否不为空并且"${VAR:-x}"永远不会为空。