争论没有通过(bash)

时间:2018-01-05 09:15:32

标签: bash shell scripting

我正在使用shell脚本......

我在测试部分,如果参数 传递

  

如果且仅当参数不为null时表达式为真

在这里我实现了以下代码:

[ -z $num ]; echo $?;

退出:

0

1 个答案:

答案 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"附近使用引号,那么测试会做你期望的。