shell中case的使用
case 語句用于根據(jù)某個(gè)表達(dá)式的值執(zhí)行不同的代碼塊。
基本結(jié)構(gòu)
case 表達(dá)式 in
模式1)
代碼塊1
;;
模式2)
代碼塊2
;;
...
*)
默認(rèn)代碼塊
;;
esac詳細(xì)解釋
case 表達(dá)式 in:case關(guān)鍵字開始一個(gè)case語句。表達(dá)式是要匹配的值,可以是一個(gè)變量或一個(gè)固定的值。in關(guān)鍵字表示模式列表的開始。
模式:
- 每個(gè)模式后面必須跟一個(gè)右括號(hào)
),以標(biāo)記該模式的結(jié)束。 - 模式可以是單個(gè)值,也可以是多個(gè)值用
|分隔,表示多個(gè)值都可以匹配同一個(gè)代碼塊。
- 每個(gè)模式后面必須跟一個(gè)右括號(hào)
代碼塊:
- 每個(gè)模式對應(yīng)的代碼塊是一系列命令,這些命令在匹配成功時(shí)會(huì)被執(zhí)行。
- 代碼塊以
;;結(jié)束,表示該分支的結(jié)束。
*):*)是默認(rèn)分支,用于處理所有不匹配前面任何模式的情況。- 默認(rèn)分支也是可選的,但通常建議包含默認(rèn)分支以處理意外情況。
esac:esac關(guān)鍵字結(jié)束整個(gè)case語句。
示例
示例 1:基本用法
#!/bin/bash
# 獲取用戶輸入
read -p "請輸入一個(gè)數(shù)字 (1-7): " num
# 根據(jù)輸入的數(shù)字輸出相應(yīng)的星期幾
case $num in
1)
echo "星期一"
;;
2)
echo "星期二"
;;
3)
echo "星期三"
;;
4)
echo "星期四"
;;
5)
echo "星期五"
;;
6)
echo "星期六"
;;
7)
echo "星期日"
;;
*)
echo "無效的輸入"
;;
esac示例 2:多值匹配
#!/bin/bash
# 獲取用戶輸入
read -p "請輸入一個(gè)字母 (a-z): " letter
# 根據(jù)輸入的字母輸出相應(yīng)的信息
case $letter in
a|e|i|o|u)
echo "這是一個(gè)元音字母"
;;
b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|w|x|y|z)
echo "這是一個(gè)輔音字母"
;;
*)
echo "無效的輸入"
;;
esac示例 3:范圍匹配
#!/bin/bash
# 獲取用戶輸入
read -p "請輸入一個(gè)數(shù)字 (1-100): " num
# 根據(jù)輸入的數(shù)字輸出相應(yīng)的范圍
case $num in
[1-9])
echo "數(shù)字在 1 到 9 之間"
;;
[1-9][0-9])
echo "數(shù)字在 10 到 99 之間"
;;
100)
echo "數(shù)字是 100"
;;
*)
echo "無效的輸入"
;;
esac特殊用法
通配符:
- 可以使用通配符
*和?進(jìn)行模糊匹配。 *匹配任意長度的任意字符。?匹配單個(gè)任意字符。
- 可以使用通配符
復(fù)合模式:
- 可以使用括號(hào)
()包含多個(gè)模式,形成復(fù)合模式。
- 可以使用括號(hào)
示例 4:通配符匹配
#!/bin/bash
# 獲取用戶輸入
read -p "請輸入一個(gè)文件名: " filename
# 根據(jù)輸入的文件名輸出相應(yīng)的信息
case $filename in
*.txt)
echo "這是一個(gè)文本文件"
;;
*.jpg|*.jpeg|*.png)
echo "這是一個(gè)圖片文件"
;;
*)
echo "未知類型的文件"
;;
esac總結(jié)
case 語句是一種強(qiáng)大的條件控制結(jié)構(gòu),適用于多種場景,特別是當(dāng)需要根據(jù)多個(gè)可能的值執(zhí)行不同操作時(shí)。通過合理使用模式匹配和默認(rèn)分支,可以編寫出簡潔且易于維護(hù)的腳本。
到此這篇關(guān)于shell中case的使用的文章就介紹到這了,更多相關(guān)shell case內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用expect實(shí)現(xiàn)的自動(dòng)登錄到多臺(tái)服務(wù)器的shell腳本
自動(dòng)登錄到多臺(tái)服務(wù)器的shell腳本,用expect來實(shí)現(xiàn)的一段代碼,需要的朋友可以參考下2013-02-02
linux shell數(shù)據(jù)重定向(輸入重定向與輸出重定向)詳細(xì)分析
這篇文章主要介紹了linux shell數(shù)據(jù)重定向(輸入重定向與輸出重定向)詳細(xì)分析,需要的朋友可以參考下2015-10-10

