我正在使用shell脚本......
我在测试部分,如果参数 传递 :
如果且仅当参数不为null时表达式为真
在这里我实现了以下代码:
[ -z $num ]; echo $?;
退出:
0
答案 0 :(得分:3)
首先,[-z
应为[ -z
,否则您会收到[-z: command not found
之类的错误。我想这只是你问题中的一个错字。
听起来你引用了手册的错误部分,这适用于这样的测试:
[ string ] # which is equivalent to
[ -n string ]
对于非空字符串,其中任何一个都会返回成功(a 0
)。
使用-z
,您将检查字符串的长度是否为0。
然而,与往常一样,要小心使用不带引号的变量,因为:
[ -z $num ]
# expands to
[ -z ]
# which is interpreted in the same way as
[ string ]
即。你的测试变为“是-z
非空字符串?”,答案是是,因此测试返回0
。如果你在"$num"
附近使用引号,那么测试会做你期望的。