if条件判断与if真假判断


 目录:

 1.正确写法

 2.错误写法

 3.总结


一、正确写法

    在编写shell脚本时,为简化代码的行号及结构的简约型,通常将命令执行结果和判断通过一条语句进行编写(在C语言编写程序时,经常遇到此种写法),如:

方法1:单一命令条件判断

[root@centos7 ~]#touch test.sh      

 if  useradd root &>/dev/null ; then    #如果用户添加成功,则不显示,否则显示用户添加失败
     echo “user1 created successfu” &>/dev/null

 else
     echo “user1 created failed”

 fi
[root@centos7 ~]#chmod +x test.sh

[root@centos7 ~]#./test.sh

user1 created failed

方法2:多重命令条件判断

[root@centos7 ~]#vim test1.sh

 #!/bin/bash
 os_release=7
 if [ $os_release -eq 7 ] && rpm -qa | grep x11 &> /dev/null ;then                     
     echo good                         #多重条件判断时,可以用多个&&,并且语句分开命令+值
 else
     echo bad
 fi

[root@centos7 ~]#chmod 777 test1.sh

[root@centos7 ~]#./test1.sh

二、错误写法

    但是如果因记忆失误或编写脚本习惯性,添加[ ]判断时,脚本变为如下:

[root@centos7 ~]#touch test.sh

 if  [ useradd user1 &>/dev/null ] ; then    #如果用户添加成功,则不显示,否则显示用户添加失败
     echo “user1 created successfu” &>/dev/null

 else
     echo “user1 created failed”

 fi
[root@centos7 ~]#chmod +x test.sh

[root@centos7 ~]#./test.sh       #

user1 created failed

[root@centos7 ~]#id user1                    #用户添加成功,本应该不显示,但显示添加失败
uid=1005(user1) gid=1005(user1) groups=1005(user1)

[root@centos7 ~]#userdel -r user1

######################调试模式执行###################################################

[root@centos7 ~]#bash -x 4.sh
+ ‘[‘ useradd user1 ‘]’         #命令执行成功,但显示失败,原因在添加[ ]条件判断,

+ echo ‘user1 created failed’   #条件判断默认是判断useradd user1添加成功后,命令结果无显示
user1 created failed            #因此默认[ -n ” ]为空,因此显示失败

三、总结

   总结,在使用if判断及命令执行结果的语法结构时,命令行中间切忌加判断,条件判断必须加条件判断表达式。其本质是,if 真假判断 和 if 条件判断的区别

        真假判断                     条件判断                          多重条件判断

     if cmd ; then               if [ statement ]; then           if [ statement ] && cmd ;then

       cmd statement                cmd statement                    cmd statement

     else                        else                             else

       cmd statement                cmd statement                    cmd statement

     fi                          fi                           fi

####################################################################################

###具体详情请咨询微信:QQ767743577  邮箱地址: xuewei_bo@126.com,有问必答,有答必应,人人为我,我为人人###

####################################################################################