即使已设置VAR,也会评估表单的Bash条件 - [-n“$ {VAR:-x}”]

时间:2009-05-28 10:51:15

标签: bash syntax shell environment-variables

我写了一份表格的if语句:

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

我的shell脚本调用此语句两次,令人惊讶将条件传递两次。

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

这是怎么回事?我是否正确理解-x标志?

谢谢!

1 个答案:

答案 0 :(得分:4)

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

同样,如果${FOO:-bar}未设置为as described here,则FOO会替换bar或字符串FOO的值。

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