shell 編程if條件判斷與if 真假判斷

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  郵箱地址: [email protected],有問必答,有答必應,人人爲我,我爲人人###

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章