Bash如果语句为null

时间:2013-10-03 13:54:26

标签: bash if-statement

寻找查看bash变量的正确语法并确定其是否为null,如果是,则执行...否则继续。

也许像if [ $lastUpdated = null?; then... else...

3 个答案:

答案 0 :(得分:12)

只测试变量是否为空:

if [ -z "$lastUpdated" ]; then
    # not set
fi

答案 1 :(得分:3)

扩展@chepner的评论,这里是你如何测试未设置(而不是设置为可能为空的值)变量:

if [ -z "${lastUpdated+set}" ]; then

${variable+word}语法在未设置$variable时给出空字符串,如果设置了字符串则为“word”:

$ fullvar=somestring
$ emptyvar=
$ echo "<${fullvar+set}>"
<set>
$ echo "<${emptyvar+set}>"
<set>
$ echo "<${unsetvar+set}>"
<>

答案 2 :(得分:3)

总结一下:bash中没有真正的 null 值。切普纳的评论就在于:

  

bash文档使用null作为空字符串的同义词。

因此,检查null意味着检查空字符串

if [ "${lastUpdated}" = "" ]; then 
    # $lastUpdated is an empty string
fi

如果您真正想做的是检查未设置或空(即&#34;&#34;,即&#39; null &# 39;)变量,使用trojanfoe的方法:

if [ -z "$lastUpdated" ]; then
    # $lastUpdated could be "" or not set at all
fi

如果你想查看天气,变量是未设置的,但空字符串很好,Gordon Davisson的回答是要走的路:

if [ -z ${lastUpdated+set} ]; then
    # $lastUpdated is not set
fi

Parameter Expansion就是这里的事情)