Shell中的條件判斷語句if then fi

2021-07-02 15:46:51 字數 3591 閱讀 7269

shell中的條件判斷語句是前面一篇「shell中的條件測試語句」的公升級篇,也就是說,前面的測試語句是為了現在的判斷語句if~then~fi語句服務的。

我們還是按照注意點和**實現的方式鋪開:

1)基本的if-then-fi語句可以用來判斷基本的單層的分支結構,其形式如下:

其中if後面的測試語句一般都使用命令來做。如下面的例子:

#-----------------------------/chapter4/ex4-18.sh------------------

#! /bin/sh

#使用條件測試判斷/bin/bash是否是乙個常規檔案

if [ -f /bin/bash ]; then

echo "/bin/bash is a file"

fi

2)if-then-else-fi語句可以處理兩層的分支判斷語句。如下:

#-----------------------------/chapter4/ex4-22.sh------------------

#! /bin/sh

#輸出提示資訊

echo "please enter a number:"

#從鍵盤讀取使用者輸入的數字

read num

#如果使用者輸入的數字大於10

if [ "$num" -gt 10 ]; then

#輸出大於10的提示資訊

echo "the number is greater than 10."

#否則else

#輸出小於或者等於10的提示資訊

echo "the number is equal to or less than 10."

fi

3)if-then-elif-then-elif-then-...-else-fi。這種語句可以實現多重判斷,注意最後一定要以乙個else結尾。如下:

#-----------------------------/chapter4/ex4-24.sh------------------

#! /bin/sh

echo "please enter a score:"

read score

if [ -z "$score" ]; then

echo "you enter nothing.please enter a score:"

read score

else

if [ "$score" -lt 0 -o "$score" -gt 100 ]; then

echo "the score should be between 0 and 100.please enter again:"

read score

else

#如果成績大於90

if [ "$score" -ge 90 ]; then

echo "the grade is a."

#如果成績大於80且小於90

elif [ "$score" -ge 80 ]; then

echo "the grade is b."

#如果成績大於70且小於80

elif [ "$score" -ge 70 ]; then

echo "the grade is c."

#如果成績大於60且小於70

elif [ "$score" -ge 60 ]; then

echo "the grade is d."

#如果成績小於60

else

echo "the grade is e."

fifi

fi

4)要退出程式的時候,可以使用exit status語句。退出的狀態status為0的時候,意味著指令碼成功執行結束;非0表示程式執行過程出現某些錯誤,不同的錯誤對應著不同的退出狀態。儘管使用者可以自定義程式中的退出狀態status,但是通常情況下每個status都有特定的含義,因此在自定義返回status的時候,一定要避免造成歧義。例子如下:

01   #-----------------------------/chapter4/ex4-26.sh------------------

02 #! /bin/sh

03

04 #如果檔案已經存在,則直接退出,檔名時輸入的第乙個引數

05 if [ -e "$1" ]

06 then

07 echo "file $1 exists."

08 exit 1

09 #如果檔案不存在,則建立檔案,使用touch來建立檔案,也可以使用重定向來建立檔案echo "hello~" > ./test.log 即在當前目錄下新建乙個test.log檔案

10 else

11 touch "$1"

12 echo "file $1 has been created."

13 exit 0

14 fi

5)case-esac語句實現多重條件判斷。如下:

注意:每乙個變數內容的程式段最後都需要兩個分號 (;;) 來代表該程式段落的結束;每個變數情況最後都要有)結尾;其餘情況用*)來表示;最後要用esac來結束,即case反過來。

#-----------------------------/chapter4/ex4-27.sh------------------

#! /bin/sh

#輸出提示資訊

echo "hit a key,then hit return."

#讀取使用者按下的鍵

read keypress

#case語句開始

case "$keypress" in

#小寫字母

[[:lower:]])

echo "lowercase letter.";;

#大寫字母

[[:upper:]])

echo "uppercase letter.";;

#單個數字

[0-9])

echo "digit.";;

#其他字元

*)echo "other letter.";;

esac

參考:《鳥哥的linux私房菜》

《shell從入門到精通》

shell指令碼的條件判斷語句

條件判斷,顧名思義,就是對當前引數進行相關條件的比較,如果符合要求就進行相對應的操作,條件語句涉及到兩種語法,if和case,兩種語法都各具特色,我們可以通過例項來進行比較 if 判斷條件1 then 條件為真的分支 elif 判斷條件2 then 條件為真的分支 elif 判斷條件3 then 條...

if條件判斷語句

如果表示式的值是true,則執行語句塊 否則跳過語句塊。equals 下面的例子使用到的,可以看看。字串判斷不能使用 要使用方法。用來判斷記憶體位址是否相等。輸入男女,輸出boy,girl system.out.println 請輸入男or女 scanner sc new scanner syste...

條件判斷語句

語法 if condition else if condition else示例 var age 20 if age 18 else語法 表示式1 表示式2 表示式3 如果表示式1的布林值為true,則執行表示式2,否則執行表示式3。是js語言中唯一乙個需要三個運算元的運算子。示例 var age ...