我最近进行的测试对以下 bash
命令的输出有疑问:
var=; [ -n $var ]; echo $?; [ -z $var ]; echo $?
结果为 0
和 0
,表明两个一元运算符的返回码都没有错误。这意味着 $var
解析为 null
(空)和 'non-null'(非空),对吗?
这怎么可能?
最佳答案
不,这意味着 [
无法修复。在这两种情况下,$var
的计算结果为空,命令只是分别执行 [ -n ]
和 [ -z ]
,这两个结果事实上。如果您想测试变量本身的值,那么您必须引用它以正确处理它。
$ var=; [ -n "$var" ]; echo $?; [ -z "$var" ]; echo $?
1
0
关于linux - Bash 空二元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14906835/