shell 分支語句 case

2022-09-01 06:12:07 字數 1402 閱讀 1247

case語句主要適用於:某個變數存在多種取值,需要對其中的每一種取值分別執行不同的命令序列。這種情況和多分支if語句非常相似。只不過if要判斷多個不同的條件而case語句只判斷乙個變數的不同取值。

case  變數值  in

模式1)

命令序列1

;;模式2)

命令序列2

;;。。。。。。。。。。。。。

*) 預設命令序列

esac

在上述結構中,關鍵字case後面跟的是「變數值」,即「$變數名」,這點需要與for迴圈語句的機構加以區別。整個分支結構包括字case。esac之間。中間的模式1.。模式10,。對應為變數的不同取值(程式期望的取值),其中「 」作為萬用字元,可以匹配任意值。

執行流程:首先使用「變數值」與模式1進行比較,若取值相同則執行模式1後的命令序列,直到遇見雙分號「;;」後跳至esac,表示結束分支;若與模式1不相匹配,則繼續與模式2進行比較,若取值相同則執行模式2後的命令序列,直到遇見雙分號,後跳至esac表示結束分支。依次類推。若找不到任何匹配的值,則執行預設模式「*)」後的命令序列,直到遇見esac後結束分支。

檢查使用者輸入字元型別:提示使用者輸入乙個字元,通過case語句判斷該字元為字母,數字或者是其他字元,並給出相應的提示。

#!/bin/bash

read -p "請輸入乙個字元,並按enter確認:" key

case "$key" in

[a-z]|[a-z])

echo "您輸入的字元為字母"

;;[0-9])

echo "您輸入的字元為數字"

;;*) echo "您輸入的是空格、功能鍵或其他控制字元"

esac

#!/bin/bash

case "$1" in

start)

echo -n "正在啟動sleep服務。。。"

if sleep 7200 &

then

echo "ok"

fi;;

stop)

echo -n "正在停止sleep服務。。。"

pkill "sleep" &> /dev/null

echo "ok"

;;status)

if pgrep "sleep" &>/dev/null;then

echo "sleep服務已經啟動"

else

echo 「sleep服務已經停止」

fi;;

restart)

$0 stop

$0 start

;;*) echo "用法:$0 "

esac

注:sleep程序命令是用來暫停指定秒數的時間的

case分支語句

case分支語句 匹配執行的方式,針對的變數預先存在的值,判斷該變數 實際取值是否和預設的值相匹配,如果匹配,就執行相應的操作 如果不匹配,就執行預先設定好的預設操作 語法結構 case 變數值 in 模式1 命令序列1 模式2 命令序列2 預設命令序列 esac bin bash read p 請...

多分支語句(case)

環境配置 測試指令碼 test.sh pattern 模式 式 格局 樣式 case語法 case 1 in pattern1 語句1 pattern2 語句2 patternn 語句n 例如 root jack31 vim if.sh bin bash test case 1in monitor ...

Shell 判斷 if 和分支 case

語法 if 條件判斷式 then do something fi或者 if 條件判斷式 then do something fi案例一,獲取當前使用者名稱,當然用whoami也可 bin bash test env grep user cut d f 2 if test root then echo...