寻找正确的语法来查看bash变量,并确定它是否为null,如果是则执行...否则继续。Bash如果声明为null
也许类似if [ $lastUpdated = null?; then... else...
寻找正确的语法来查看bash变量,并确定它是否为null,如果是则执行...否则继续。Bash如果声明为null
也许类似if [ $lastUpdated = null?; then... else...
只是测试,如果变量为空:
if [ -z "$lastUpdated" ]; then
# not set
fi
扩大对@ chepner的意见,这里是你如何可以测试未设定的(而不是设置为一个可能为空值)变量:
if [ -z "${lastUpdated+set}" ]; then
的${variable+word}
语法给出了一个空字符串,如果$variable
没有设置,并且串“字”,如果它的设置:
$ fullvar=somestring
$ emptyvar=
$ echo "<${fullvar+set}>"
<set>
$ echo "<${emptyvar+set}>"
<set>
$ echo "<${unsetvar+set}>"
<>
你可以放心地在你的表达式中省略引号,使它成为'if [-z $ {lastUpdated + set}];'。[这个SO回答](https://stackoverflow.com/questions/3601515/how-to-check-if-a-variable-is-set-in-bash)给出了详细的解释。 – panepeter
@panepeter确实如此,但我的经验是,只需对引用变量的引用进行双引号比查明何时可以放弃引用变得更加简单和安全。在这种情况下,它需要详细的解释(包括理解[[-z]'做了什么以及为什么),这使得使用双引号更容易。换句话说:如果有人认为'[-z $ {lastUpdated + set}]'是一个测试set变量的好方法,他们可能会推断'[-n $ {lastUpdated + set}] '是测试未设置变量的好方法,但它会完全失败。 –
要总括起来:有在bash没有真正空值。 Chepner的评论是关于点:
bash文档使用null作为空字符串的同义词。
因此,检查空就意味着检查的空字符串:
if [ "${lastUpdated}" = "" ]; then
# $lastUpdated is an empty string
fi
如果你真的想要做的是检查是否有设置或者为空(即“”,即'空')变量,使用trojanfoe的做法:
if [ -z "$lastUpdated" ]; then
# $lastUpdated could be "" or not set at all
fi
如果你想查天气变量没有设置,但细跟空字符串,戈登·戴维森的答案是要走的路:
if [ -z ${lastUpdated+set} ]; then
# $lastUpdated is not set
fi
(Parameter Expansion是发生了什么事情在这里)
'-eq'用于比较整数;你需要'='来比较字符串。 –
有bash中没有“空”值。字符串可以是空的或未设置的;你如何设置'$ lastUpdated'的值? –
'null'是什么意思? – zoska
在某些情况下,诸如“$ {lastUpdated:= never}”或“$ {lastUpdated:-never}”等符号可能是合适的。查看[参数扩展](http://www.gnu.org/software/bash/manual/bash.html#Shell-Parameter-Expansion)。 –