一,case陳述句解釋
1,case陳述句的作用
case陳述句用于條件判斷,判斷一個變數的不同取值
2,case陳述句的語法
case 變數值 in
匹配模式1)
命令序列1
;;
匹配模式2)
命令序列2
;;
........
........
*) #表示不是以上模式則執行
命令序列
;;
esac
3, case陳述句的基本含義
case行必須以“in”結尾
匹配模式必須以“)”結尾
“;;” 雙分號表示命令序列結束
“*)”表示默認模式,“ * ”于通配符含義相同
4, case陳述句的執行流程
首先使用“變數值”與匹配模式1進行比較,如果值相同則執行該模式命令序列,直至“;;”號后跳轉esac,結束分支,如果“變數值”與匹配模式1不同,則與匹配模式2進行匹配取值,如果值相同則執行該模式命令序列,直至“;;”號后跳轉esac,結束分支,如果“變數值”與匹配模式2不同,則繼續匹配下個匹配模式,以此類推,如果找到不到匹配相同的值,則執行“*)”模式后的命令序列,直至esac結束分支,
5,read命令解釋
read命令從鍵盤讀取變數的值,該命令可以一次讀取多個變數的值,變數和輸入的值都需要使用空格隔開,
read 命令詳解:https://man.linuxde.net/read
二,sace陳述句應用實體
1,為了進一步的了解使用sace使用,下面搭搭建兩個簡單的腳本練習,
腳本1:
腳本內容:
[root@localhost 1]# vim gF.sh
#!/bin/bash
read -p "你今天吃了什么飯?
:" gF
case $gF in
"饅頭")
echo "今天吃了$gF"
exit 0 #exit0 為退出的回傳狀態碼
;;
"米飯")
echo "今天吃了$gF"
exit 11
;;
"包子")
echo "今天吃了$gF"
exit 22
;;
"面條")
echo "今天吃了$gF"
exit 33
;;
*)
echo "識別不到此食物"
exit 87
;;
esac
[root@localhost 1]# chmod +x gF.sh
[root@localhost 1]# ./gF.sh
你今天吃了什么?
:饅頭
今天吃了饅頭
[root@localhost 1]# ./gF.sh
你今天吃了什么?
:111
識別不到此食物
腳本解釋:
read命令輸出的值為$gF變數,隨后case $gF in 代碼行檢測read輸出值是否為“饅頭”,如果為饅頭則執行命令列,輸出今天吃了饅頭,如果不為饅頭則繼續檢測匹配,匹配完所有匹配模式分支沒有相同的,則執行默認“*)”輸出識別不到次食物,
腳本2:
腳本內容:
[root@localhost 1]# vim Sz.sh
#!/bin/bash
read -p "輸入一個數字或字母:" Sz
case $Sz in
[a-z])
echo "你輸入的是小寫字母"
;;
[A-Z])
echo "你輸入的大寫字母"
;;
[0-99999])
echo "你輸入的是數字"
;;
*)
echo "你輸入的是其他字符"
;;
esac
[root@localhost 1]# chmod +x Sz.sh
[root@localhost 1]# ./Sz.sh
輸入一個數字或字母:9
你輸入的是數字
[root@localhost 1]# ./Sz.sh
輸入一個數字或字母:z
你輸入的是小寫字母
[root@localhost 1]# ./Sz.sh
輸入一個數字或字母:Z
你輸入的大寫字母
腳本解釋
read命令輸出的值為$Sz變數,隨后case $Sz in 代碼行檢測read輸出值是否為“a-z”,如果為小寫字母“a-z”則執行命令列,輸出你輸入的是小寫字母,如果不為“a-z”則繼續檢測匹配,匹配完所有匹配模式分支沒有相同的,則執行默認“*)”輸出你輸入的是其他字符,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/233584.html
標籤:其他
