執行流程:
首先使用變數值與數值1進行比較,若取值相同則執行數值1後的命令序列,直到遇見雙分號;; 後跳轉至esac,表示分支結束;若與數值1不相匹配,則繼續與數值2 進行比較,若取值相同則執行數值2 後的命令序列,直到遇見雙分號;; 後跳轉至esac,表示結束分支,……依次類推,若找不到任何匹配的值,則執行預設模式*) 後的命令序列,直到遇見esac後結束分支。
case 變數值 in
數值1)
命令序列
;;數值2)
命令序列;;…
*)預設命令序列
esac
例1:使用者輸入0-9任意乙個數字,通過case來判斷使用者輸入的是哪乙個數字
#!
/bin/bash
#date:
2020-2
-28#描述:判斷使用者輸入數字
read -p "請輸入乙個數(0-9) ==> "
numcase $numin1
) echo "輸入的數是 1 ";;
2)echo "輸入的數是 2 ";;
[3-8
])echo "輸入的數是 $num";;
9|0)
echo "輸入的數是 $num";;
*)echo "請輸入數字 [0-9]"
esac
其中的,表示匹配中的任意乙個數。
執行效果:
[root@linus ~
]# sh test.sum.sh
請輸入乙個數(0
-9)==
>
1輸入的數是 1
[root@linus ~
]# sh test.sum.sh
請輸入乙個數(0
-9)==
>
5輸入的數是 5
[root@linus ~
]# sh test.sum.sh
請輸入乙個數(0
-9)==
> k
請輸入數字 [0-
9]
例2:使用case做乙個小劇場
指令碼內容:
#!
/bin/bash
#date:
2020-2
-28#描述:使用case做乙個小劇場
echo "飯店選單:"
echo "1.炒麵"
echo "2.餛飩"
echo "3.餃子"
read -p "服務員(女):請問先生,您想吃點什麼?" sum
case $sum in
1|炒麵)
echo -e "\033[36m我:那我就要炒麵吧-----\033[0m"
echo -e "\033[36m服務員:好的先生-----\033[0m";;
2|餛飩)
echo -e "\033[36m我:我要個餛飩-----\033[0m"
echo -e "\033[36m服務員:好的先生-----\033[0m";;
3|餃子)
echo -e "\033[36m我:給我來乙個餃子-----\033[0m"
echo -e "\033[36m服務員:好的先生-----\033[0m";;
*)echo -e "\033[31m我:那我來乙個$sum-----\033[0m"
echo -e "\033[31m服務員:很抱歉,先生,我們沒有$sum-----\033[0m"
esac
在1數值中的1 | 炒麵,| 是邏輯或,代表著1或者炒麵,標準格式為"1|炒麵",通常情況下,不加也不會影響結果,但對於有空格的字串,需要加上雙引號,將其看做乙個整體。
執行效果:
了解文字色彩設定請轉到==>
例3:使用case製作乙個mysqld的控制指令碼
指令碼內容:
#!
/bin/bash
#date:
2020-2
-28#描述:mysqld控制指令碼
case $1
instart)
service mysqld $1
&>
/dev/
null
ps -ef | grep mysqld &
>
/dev/
null
if[ $?
-eq 0
] then
echo -e "\033[34m mysqld啟動成功-------\033[0m"
else
echo -e "\033[34m mysqld啟動失敗-------\033[0m"fi;
;stop)
service mysqld $1
&>
/dev/
null
echo -e "\033[34m mysqld服務關閉---------------\033[0m";;
status)
echo -e "\033[34m mysqld服務狀態-----------\033[0m"
service mysqld $1;;
restart)
service mysqld $1
&>
/dev/
null
echo -e "\033[34m mysqld服務重啟成功-----------\033[0m";;
*)echo "輸入錯誤,格式為$0 start|stop|status|restart"
esac
執行效果:
Shell流程控制之case
case value in model1 dosomething1.model2 dosomething2.dosomething3.escacase為多選擇語句,會用value與模式匹配,每個模式後面要加 表示模式結束。如果匹配成功,則執行相應的命令直至遇到 結束。value可以是變數或常數。可以...
shell 流程控制 case語句
shell case語句為多選擇語句。可以用case語句匹配乙個值與乙個模式,如果匹配成功,執行相匹配的命令。case語句格式如下 case 值 in 模式1 command1 command2 commandn 模式2 command1 command2 commandn esaccase工作方式...
shell指令碼和流程控制
輸出 echo 注釋以 開頭,但唯獨第一行不是注釋,他代表當前shell的型別,下面寫乙個小例子 bin bash 直接寫命令 輸出當前時間 date 輸出當前使用者資訊 who 建立變數,變數和等號之間不能有空格,當字串之間沒有空格時可以直接賦值,有空格的要加雙引號 str1 i str str1...