Chinaunix
标题:
if判断语句判断出错
[打印本页]
作者:
HSRLJYHCY
时间:
2014-10-23 13:12
标题:
if判断语句判断出错
本帖最后由 HSRLJYHCY 于 2014-10-23 13:13 编辑
nus835:AMCOP:/ora/admin#cat test.sh
#!/bin/ksh
if [ `uname` = "SunOS" ] && [ `uname -a|awk -F' ' '{print $3}'`=="5.10" ]
then
echo "This is 5.10 Solaris version"
elif [ `uname` = "SunOS" ] && [ `uname -a|awk -F' ' '{print $3}'`=="5.8" ]
then
echo "This is 5.8 Solaris version"
fi
上面的脚本是想去判断一下Solaris的版本,但执行它在5.8的机器,它却返回结果是5.10
nus835:AMCOP:/#uname -a
SunOS nus835 5.8 Generic_Virtual sun4v sparc SUNW,SPARC-Enterprise-T5220
nus835:AMCOP:/ora/admin#uname -a|awk -F' ' '{print $3}'
5.8
nus835:AMCOP:/ora/admin#./test.sh
This is 5.10 Solaris version <== Here 它应该返回 "This is 5.8 Solaris version"
问题在那呢?
作者:
jason680
时间:
2014-10-23 13:30
回复
1#
HSRLJYHCY
$ if [ "5.10" = "5.8" ]; then echo "yes"; else echo "no"; fi
no
$ if [ "5.10"=="5.8" ]; then echo "yes"; else echo "no"; fi
yes
$ if [ "5.10"="5.8" ]; then echo "yes"; else echo "no"; fi
yes
作者:
HSRLJYHCY
时间:
2014-10-23 13:40
回复
2#
jason680
要如何写呢?
作者:
Shell_HAT
时间:
2014-10-23 13:55
1、把 = 改成 ==
2、确保 == 左右两边有空格
3、这样执行脚本:
chmod u+x test.sh
./test.sh
不要这样执行:
sh test.sh
作者:
HSRLJYHCY
时间:
2014-10-23 14:24
Shell_HAT 发表于 2014-10-23 13:55
1、把 = 改成 ==
2、确保 == 左右两边有空格
3、这样执行脚本:
可以了,谢谢
作者:
o枫叶o飘零
时间:
2014-10-24 09:18
回复
1#
HSRLJYHCY
if [ `uname` = "SunOS" ] && [ `uname -a|awk -F' ' '{print $3}'`=="5.10" ]
then
echo "This is 5.10 Solaris version"
elif [ `uname` = "SunOS" ] && [ `uname -a|awk -F' ' '{print $3}'`=="5.8" ]
then
echo "This is 5.8 Solaris version"
fi
复制代码
if和elif判断条件一样的?
你这再怎么判断都只能返回This is 5.10 Solaris version这样的值或者不返回值.....
作者:
Shell_HAT
时间:
2014-10-24 09:36
回复
6#
o枫叶o飘零
仔细看看吧,不一样。
作者:
o枫叶o飘零
时间:
2014-10-24 10:36
回复
7#
Shell_HAT
眼神不好
才发现是&&后面不一样
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2