Shell條件語句if、case
阿新 • • 發佈:2021-07-15
1. test測試
Shell環境根據命令執行後的返回狀態值($?) 來判斷是否執行成功。
當返回值為0時表示成功,返回值為非0值時表示失敗或異常,test命令,可以對特定條件進行測試,並根據返回值來判斷條件是否成立($?返回值為0表示條件成立)。
1 格式1: test 條件表示式 2 格式2: [ 條件表示式 ]
測試表達式是否成立,若成立返回值為0,否則返回其他數值。
2. 檔案/目錄測試
格式為:操作符 檔名或者目錄名
常用的測試操作符
1 -d∶ 測試是否為目錄(Directory) 2 3 -e∶ 測試目錄或檔案是否存在(Exist) 4 5 -f∶ 測試是否為檔案(File) 6 7 -r∶ 測試當前使用者是否有許可權讀取(Read) 8 9 -w∶ 測試當前使用者是否有許可權寫入(Write) 10 11 -x∶ 測試當前使用者是否有許可權執行(eXcute) 12 13 -L∶ 測試是否為軟連結檔案
整數值比較
格式為:[ 整數1 操作符 整數2 ]
常用的測試操作符
1 -eq∶ 等於(Equal) 2 3 -ne∶ 不等於(Not Equal) 4 5 -gt∶ 大於(Greater Than) 6 7 -It∶ 小於(Lesser Than) 8 9 -le∶ 小於或等於(Lesser orEqual)·10 11 -ge∶ 大於或等於(Greateror Equal)
字串比較
1 格式1 2 3 【 字串1 = 字串2 】 4 【 字串1 != 字串2 】 5 6 格式2 7 8 【 -z 字串 】 #是否空值 9 【 -n 字串 】 #字符集是否存在
常用的測試操作符
- =: 字串內容相同
- !=: 字串內容不同,! 號表示相反的意思
- -z: 字串內容為空
邏輯測試
1 格式1:[ 表示式 1 ] 操作符 [ 表示式 2 ] 2 3 格式2:命令1 操作符 命令2
常用的測試操作符
- -a或&&: 邏輯與,‘‘而且" 的意思.
- -o或||: 邏輯或,“或者” 的意思
- !: 邏輯否
3. if條件語句
單分支結構
如果只有一個判斷式要進行,那麼我們可以使用單分支的if語句
1 if [ 條件判斷式 ]; than 2 當條件判斷成立時,可以進行的命令工作內容 3 fi #這裡將if反過來寫,結束if語句的意思
例:
使用if語句判斷輸入的內容是否為整數
多分支結構
如果資料需要進行多種不同的判斷,則可以使用多分支結構
1 if [ 條件判斷式 ]; than 2 當條件判斷成立時,可以進行的命令工作內容 3 elif [ 條件判斷式二 ]; than 4 當條件判斷成立時,可以進行的命令工作內容 5 else 6 當上面的條件判斷都不成立時,可以進行的命令工作內容 7 fi
例:
- 考試成績100滿分
- 80~100分為優秀
- 60~80分為良好
- 0~60分為不及格
4.case條件語句
1 case 變數名稱 in 2 “第一個變數內容” 3 程式段 4 ;; 5 “第二個變數內容” 6 程式段 7 ;; 8 *) 9 不包含第一個變數內容與第二個變數內容的其他程式執行段 10 預設程式段 11 ;; 12 esac
例1:
- 提示使用者輸入100米賽跑的秒數
- 要求判斷秒數大於0且小於等於10秒的進入選拔賽
- 大於10秒的都淘汰
- 如果輸入其它字元則提示重新輸入;
- 進入選拔賽的成員再進一步判斷男女性別,男生進男生組,女生進女生組,如果輸入錯誤請提示錯誤
例2:
- 用case語句在/etc/init.d/目錄中寫一個firewalld指令碼
- 並加入到系統服務管理中
- 使能夠使用 service firewalld start|stop|restart|status 來管理firewalld服務
- 要求如果命令選項不對,則提示 “用法: $0 {start|stop|status|restart}”