我写了一份表格的if语句:
if [ -n "${VAR:-x}" ]; then
#do something
export VAR=#something
fi
我的shell脚本调用此语句两次,令人惊讶将条件传递两次。
[提示(可能......):这个确切的代码在包含文件的函数中重复。在函数调用之前首先计算if语句。调用函数时会“再次”评估它。]
这是怎么回事?我是否正确理解-x标志?
谢谢!
答案 0 :(得分:4)
${VAR:-x}
表示如果未设置VAR
,则替换字符串x
,否则替换VAR
的值。
同样,如果${FOO:-bar}
未设置为as described here,则FOO
会替换bar
或字符串FOO
的值。
这意味着-n "${VAR:-x}"
将始终为真,因为-n
表示检查是否为空,"${VAR:-x}"
永远不会为空。