9

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

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

4

3 回答 3

13

只需测试变量是否为空:

if [ -z "$lastUpdated" ]; then
    # not set
fi
于 2013-10-03T13:57:00.940 回答
4

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

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

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

$ fullvar=somestring
$ emptyvar=
$ echo "<${fullvar+set}>"
<set>
$ echo "<${emptyvar+set}>"
<set>
$ echo "<${unsetvar+set}>"
<>
于 2013-10-04T04:01:38.947 回答
4

总结一下:bash 中没有真正的值。切普纳的评论是正确的:

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

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

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

如果您真正想要做的是检查未设置或空(即“”,即“”)变量,请使用 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

参数扩展是这里发生的事情)

于 2017-10-12T08:19:07.013 回答