1. 程式人生 > 其它 >if條件判斷

if條件判斷

 

 

如何寫一個高可用性的指令碼,賦予指令碼智慧化,賦予指令碼執行邏輯。

比如nginx安裝指令碼中

  • configure執行成功在執行make,
  • make執行成功在執行make install
  • 上一步錯誤就不需要執行後面的程式碼了。

answer: 加入判斷

只要你想在程式碼中判斷一下的時候就第一時間想到if就行了,適用於99%的語言。

 

 

一、if語法

1,語法一:單if語句

適用範圍:只需要一步判斷,條件返回真幹什麼。

語句格式

if [ condition ]           #condition 值為true or false
   then                    #條件為真的時候執行
      commands             #程式碼塊 一行或者多行程式碼
fi			   #語句的結束

該語句翻譯成漢語大意如下:

假如  條件為真
 那麼
    執行commands程式碼塊
結束


例如:

[root@CentOs shell]# vim wz.sh

 

 

#!/bin/bash

if [ ! -d /opt/shell/wz ](注意,此處[]兩邊必須有空格!)
    then
        mkdir -v /opt/shell/wz
        echo "wz is created!"
fi


[root@CentOs shell]# bash wz.sh
mkdir: 已建立目錄 "/opt/shell/wz"
wz is created!
[root@CentOs shell]# ls
abc  exit_code.sh  hello.sh  ShellTest.sh  wz 
wz.sh
[root@CentOs shell]#



2,語法二:if else 運算

適用範圍:只需要一步判斷,條件返回真幹什麼。

語句格式

if [ condition ]           #condition 值為true or false
   then                    #條件為真的時候執行
      commands             #程式碼塊 一行或者多行程式碼
fi			   #語句的結束

該語句翻譯成漢語大意如下:

假如  條件為真
 那麼
    執行commands程式碼塊
結束




例如:

如果當前登入使用者是root,輸出管理員你好
否則輸出,guest,你好


 [root@CentOs shell]# vim ShellTest.sh



 


#!/bin/bash

if [ $USER == 'root']
   then
        echo "管理員,你好"
else
        echo "guest,你好"
fi



[root@CentOs shell]# bash ShellTest.sh
管理員,你好
[root@CentOs shell]# su slime
[slime@CentOs shell]$ bash ShellTest.sh
guest,你好
[root@CentOs shell]# su - slime -c "bash /opt/shell/ShellTest.sh"
guest,你好
[root@CentOs shell]#






3、語法三:if-then-else語句

適用範圍:多於兩個以上的判斷結果,也就是多於一個以上的判斷條件。

if [ condition 1]     滿足第一個條件

     then          真

            command1    執行command1程式碼塊
else [ condition 2]   滿足第二個條件
 
     then           真

             commands2    執行command2程式碼塊

  .......
else      如果條件都不滿足

            commandsX      執行commandX程式碼塊
fi    結束判斷

該語句翻譯成漢語大意如下:

假如 條件1 為真

      那麼

             執行程式碼塊1
假如 條件2 為真

      那麼

            執行程式碼塊2

      以此類推的N個條件及對應的執行程式碼塊
否則 【以上所有條件中沒有一個滿足的】

           執行程式碼塊X
結束




例如:
判斷兩個整數的關係


[root@CentOs shell]# vim ShellTest.sh

($1 和$2就是相當於命令列傳參的意思!)

#!/bin/bash

if [ $1 -eq $2 ]
   then
        echo "$1 == $2"
else
        if [ $1 -gt $2  ]
           then
                echo "$1 > $2"
        else
                echo "$1 < $2"
        fi
fi


 

 



[root@CentOs shell]# bash ShellTest.sh 1 2
1 < 2
[root@CentOs shell]# bash ShellTest.sh 2 2
2 == 2
[root@CentOs shell]# bash ShellTest.sh 2 1
2 > 1
[root@CentOs shell]#



或者可以這樣寫:


 

 

[root@CentOs shell]# bash ShellTest.sh 2 1
2 > 1
[root@CentOs shell]# bash ShellTest.sh 2 2
2 == 2
[root@CentOs shell]# bash ShellTest.sh 1 2
1 < 2
[root@CentOs shell]#





4、if高階運算

(1)條件符號使用雙小圓括號,可以在條件中植入數學表示式!

 

 

[root@CentOs shell]# bash ShellTest.sh
no
[root@CentOs shell]#



注意:雙小圓括號中的比較運算子,使用的是我們傳統的比較運算子 如:> 、>=、 ==、 <、 <= 、!=


(2)使用雙方括號,可以在條件中使用萬用字元