if條件判斷
阿新 • • 發佈:2022-04-02
如何寫一個高可用性的指令碼,賦予指令碼智慧化,賦予指令碼執行邏輯。
比如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)使用雙方括號,可以在條件中使用萬用字元