我写了一个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
或字符串。bar
FOO
这意味着-n "${VAR:-x}"
将始终为真,因为-n
意味着检查是否不为空并且"${VAR:-x}"
永远不会为空。