Linux shell腳本 (十二)case語句


case語句

case ... esac 與其他語言中的 switch ... case 語句類似,是一種多分枝選擇結構。

case 語句匹配一個值或一個模式,如果匹配成功,執行相匹配的命令。case語句格式如下:

casein
模式1)
    command1
    command2
    command3
;;
模式2)
    command1
    command2
    command3
;;
*)
    command1
    command2
    command3
;;
esac

​ case工作方式如上所示。取值后面必須為關鍵字 in,每一模式必須以右括號結束。取值可以為變量或常數。匹配發現取值符合某一模式后,其間所有命令開始執行直至 ;;。;; 與其他語言中的 break 類似,意思是跳到整個 case 語句的最后。

​ 取值將檢測匹配的每一個模式。一旦模式匹配,則執行完匹配模式相應命令后不再繼續其他模式。如果無一匹配模式,使用星號 * 捕獲該值,再執行后面的命令。

​ 下面的腳本提示輸入1到4,與每一種模式進行匹配:

echo 'Input a number:'
read Num
case $Num in
    1)  echo 'You select 1'
    ;;
    2)  echo 'You select 2'
    ;;
    3)  echo 'You select 3'
    ;;
    4|5)  echo 'You select 4 or 5'
    ;;
    *)  echo 'default'
    ;;
esac

輸入不同的內容,會有不同的結果,例如:

Input a number:
3
You select 3

再舉一個例子:

#!/bin/bash
option=$1
case ${option} in
   -f) echo "param is -f"
      ;;
   -d) echo "param is -d"
      ;;
   *) 
      echo "$0:usage: [-f ] | [ -d ]"
      exit 1  #退出碼
      ;;
esac

運行結果:

$./test.sh
test.sh: usage: [ -f filename ] | [ -d directory ]
$ ./test.sh -f 
param is -f
$ ./test.sh -d 
param is -d
$




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM