1. 程式人生 > 其它 >Shell條件語句if、case

Shell條件語句if、case

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}”