【发布时间】:2012-02-28 16:25:52
【问题描述】:
#! /bin/bash
echo "Please input 2 nums: "
read a b
if [ -z $b ]; then
echo b is zero !
fi
if [ -n $b ]; then
echo b is non-zero !
fi
运行脚本时,只输入1个数字,其他留空,则b应为空。但结果是两个 echo 都被打印出来了。
-laptop:~$ ./test.sh
Pleaes input 2 nums:
5
b is zero !
b is non-zero !
b 既为空又非空?!有人可以对此发表评论吗?谢谢!
~
【问题讨论】:
-
+1 用于显示您的代码和实际输出。祝你好运!
-
如果您只为 Bash 编写代码,那么您可能希望将
[条件句替换为[[。推荐阅读:mywiki.wooledge.org/BashFAQ/031 -
这里有竞争条件。在两个
if测试之间,磁盘上的文件大小可能会发生变化。如果你的代码实际上有这种形式,你应该使用else。