LinuxShell腳本——選擇結構 摘要:本文主要學習了Shell腳本中的選擇結構。 if-else語句 基本語法 最簡單的用法就是只使用if語句,它的語法格式為: 如果將if和then寫在一行,則需要在then前面添加“;”: 如果有兩個分支,就可以使用if-else語句,它的格式為: Shel ...
LinuxShell腳本——選擇結構
摘要:本文主要學習了Shell腳本中的選擇結構。
if-else語句
基本語法
最簡單的用法就是只使用if語句,它的語法格式為:
1 if 條件 2 then 3 命令 4 fi
如果將if和then寫在一行,則需要在then前面添加“;”:
1 if 條件; then 2 命令 3 fi
如果有兩個分支,就可以使用if-else語句,它的格式為:
1 if 條件 2 then 3 命令1 4 else 5 命令2 6 fi
Shell支持任意數目的分支,當分支比較多時,可以使用if-elif-else-結構,它的格式為:
1 if 條件1 2 then 3 命令1 4 elif 條件2 5 then 6 命令2 7 elif 條件3 8 then 9 命令3 10 ... 11 else 12 命令n 13 fi
使用舉例
最簡單的使用案例,只有一個條件和一個命令:
1 #!/bin/bash 2 read a 3 read b 4 if (( $a == $b )) 5 then 6 echo "a和b相等" 7 fi
根據條件執行不同的命令:
1 #!/bin/bash 2 read a 3 read b 4 if (( $a == $b )) 5 then 6 echo "a和b相等" 7 else 8 echo "a和b不相等" 9 fi
當有多個條件需要判斷時:
1 #!/bin/bash 2 read a 3 if (( $a > 90 )) 4 then 5 echo "優秀" 6 elif (( $a > 80 )) 7 then 8 echo "良好" 9 elif (( $a > 70 )) 10 then 11 echo "中等" 12 elif (( $a > 60 )) 13 then 14 echo "及格" 15 else 16 echo "不及格" 17 fi
case-in語句
基本語法
表達式既可以是一個變數、一個數字、一個字元串,也可以是一個數學計算表達式,或者是命令的執行結果,只要能夠得到確定的值就可以。
條件可以是一個數字、一個字元串,甚至是一個簡單的正則表達式。
case會將表達式的值與多個條件逐個進行匹配:
1 如果表達式的值和某個條件匹配成功,就會執行這個條件後面對應的所有語句,直到遇見雙分號;;才停止;然後整個case語句就執行完了,程式會跳出case語句,執行esac後面的其它語句。 2 如果表達式的值沒有匹配到任何一個條件,那麼就執行*)後面的語句(符號“*”表示其它所有值),直到遇見雙分號;;或者esac才結束。
語法格式如下:
1 case 表達式 in 2 條件1) 3 命令1 4 ;; 5 條件2) 6 命令2 7 ;; 8 條件3) 9 命令3 10 ;; 11 ... 12 *) 13 命令n 14 esac
支持的正則表達式
case-in的條件部分支持簡單的正則表達式,具體來說,可以使用以下幾種格式:
1 *:表示任意字元串。 2 [abc]:表示a、b、c三個字元中的任意一個。比如,[15ZH]表示1、5、Z、H四個字元中的任意一個。 3 [m-n]:表示從m到n的任意一個字元。比如,[0-9]表示任意一個數字,[0-9a-zA-Z]表示字母或數字。 4 |:表示多重選擇,類似邏輯運算中的或運算。比如,abc|xyz表示匹配字元串“abc”或者“xyz”。
使用舉例
1 #!/bin/bash 2 read a 3 case $a in 4 90) 5 "優秀";; 6 80) 7 "良好";; 8 70) 9 "一般";; 10 60) 11 echo "及格";; 12 *) 13 echo "不及格" 14 esac