shell指令碼 case流程控制簡單案例

2021-10-03 07:48:06 字數 3008 閱讀 3900

執行流程:

首先使用變數值與數值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...