shell脚本用if遇到的坑

By | 2017年5月18日

学了python之后,shell好多东西都忘记了,还得百度,愁人。。。

今天写了个shell脚本,用if判断,结果和预期有差距,写了个测试的

A=
if [ -n $A ] # -n判断是否为非空
then
echo “aaaaaaaaaa”
else
echo “bbbbbbbbbbb”
fi

感觉没啥问题,因为A值为空,所以预期为bbbbbbbbb,但是输出结果总是为aaaaaaaa。

最后百度,发现if里的$A应用””,正确如下

A=
if [ -n “$A” ] # -n判断是否为非空
then
echo “aaaaaaaaaa”
else
echo “bbbbbbbbbbb”
fi

好坑。。。。。。

最后,加参数-x  测试一下,才明白是参数没传递过去。

[root@localhost ~]# sh -x test.sh
+ A=
+ ‘[‘ -n ‘]’
+ echo aaaaaaaaaa
aaaaaaaaaa
[root@localhost ~]# vim test.sh
[root@localhost ~]# sh -x test.sh
+ A=
+ ‘[‘ -n ” ‘]’
+ echo bbbbbbbbbbb
bbbbbbbbbbb

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注