形式为-[-n";${VAR:-x}";]的Bash条件即使设置了VAR也会得到计算
我已经写了一份形式的if声明:形式为-[-n";${VAR:-x}";]的Bash条件即使设置了VAR也会得到计算,bash,syntax,shell,environment-variables,Bash,Syntax,Shell,Environment Variables,我已经写了一份形式的if声明: if [ -n "${VAR:-x}" ]; then #do something export VAR=#something fi 我的shell脚本调用此语句两次,并且出乎意料地通过了两次条件 [提示(可能是…):此确切代码在包含文件的函数中重复。if语句在函数调用之前首先求值。在函数调用时“再次”求值。] 这里怎么了?我是否错误地理解了-x标志 谢谢 ${VAR:-x}表示如果未设置VAR,则替换字符串x,否则替换VAR的值 类似地,${FOO
if [ -n "${VAR:-x}" ]; then
#do something
export VAR=#something
fi
我的shell脚本调用此语句两次,并且出乎意料地通过了两次条件
[提示(可能是…):此确切代码在包含文件的函数中重复。if语句在函数调用之前首先求值。在函数调用时“再次”求值。]
这里怎么了?我是否错误地理解了-x标志
谢谢
${VAR:-x}
表示如果未设置VAR
,则替换字符串x
,否则替换VAR
的值
类似地,${FOO:-bar}
表示如果未设置FOO
,则替换FOO
的值或字符串bar
这意味着
-n“${VAR:-x}”
将始终为真,因为-n
意味着检查是否为空,“${VAR:-x}”
将永远不会为空。${VAR:-x}
表示如果未设置VAR
则替换字符串x
,否则替换VAR
的值
类似地,${FOO:-bar}
表示如果未设置FOO
,则替换FOO
的值或字符串bar
这意味着-n“${VAR:-x}”
将始终为真,因为-n
意味着检查是否为空,“${VAR:-x}”
将永远不会为空。那么我如何查询变量的存在性/非空性?只需-n“${VAR}”就可以了。如果VAR设置为非空,则为真。那么如何查询变量的存在性/非空性?只需-n“${VAR}”即可。如果VAR被设置为非空,这将是真的。我的想法来自:并且被误导了。也许这是我的错……我的想法来自:并且被误导了。也许这是我的错。。。