在Unix Shell中,可以使用[ -n ]来判断一个string不是NULL值,但是之前却以为这是骗人的把戏。因为执行下面的命令,返回是0值(即真),可是BB明明是没有内容的。
[root]# export BB=
[root]# [ -n $BB ]
[root]# echo $?
0
今日翻书才知道,原来需要用双引号把变量名括起来,即变成[ -n "$BB" ]。这样才行。
[root]# [ -n "$BB" ]
[root]# echo $?
1
因为如果没有双引号括起变量,当BB为null时,判定表达式变成:[ -n ]。这显然是范围true。当然,如果不想用双引号,那么使用[[ ]]判定语句也是可以的。
[root]# [[ -n $BB ]]
[root]# echo $?
1
[root]# echo $?
1
因为如果没有双引号括起变量,当BB为null时,判定表达式变成:[ -n ]。这显然是范围true。当然,如果不想用双引号,那么使用[[ ]]判定语句也是可以的。
[root]# [[ -n $BB ]]
[root]# echo $?
1
本文介绍了在UnixShell中正确判断字符串是否为空的方法。通过使用双引号括起变量或采用[[]]语法,可以避免因变量为空而导致的误判问题。
7948

被折叠的 条评论
为什么被折叠?



