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


   
  1. if [ `uname` = "SunOS" ] &&  [ `uname -a|awk -F' ' '{print $3}'`=="5.10" ]
  2. then
  3.     echo "This is 5.10 Solaris version"
  4. elif [ `uname` = "SunOS" ] &&  [ `uname -a|awk -F' ' '{print $3}'`=="5.8" ]
  5. then
  6.     echo "This is 5.8 Solaris version"
  7. 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