shell中的case in語句

2021-10-02 21:30:22 字數 2215 閱讀 1051

和其它程式語言類似,shell也支援兩種分支結構(選擇結構),分別是if else 語句和 case in 語句。

格式:

case expression in

pattern 1)

statement1

;;pattern 2)

statement2

;;…… *)

statementn

esac

其中:case in 和esac都是shell關鍵字,expression表示表示式,pattern表示匹配模式

expression既可以是乙個變數、乙個數字、乙個字串,也可以是乙個數學計算表示式或者命令的執行結果只要能夠得到expression的值就可以。

pattern可以是乙個數字、乙個字串、甚至是乙個簡單的正規表示式

執行過程:

對*) 的說明:

case in語句中的*)用來「托底」,萬一expression沒有匹配到任何乙個模式,*)部分可以做一些「善後」工作,或者給使用者一些提示

可以沒有*)部分,如果expression沒有匹配到任何乙個模式,就不執行任何操作

除了最後乙個分支外(可以是普通分支,也可以是*)分支),其他的分支都必須以;;結尾,;;代表乙個分支的結束,不寫的話會有語法錯誤。最後乙個分支可以寫;;,也可以不寫。因為無論如何,執行到esac都會結束整個case in語句

例:

case in 的pattern部分支援簡單的正規表示式,具體來說,可以使用以下幾種格式: 格式

說明*表示任意字串

[abc]

表示a、b、c三個字元中的任意乙個

[15zh]

表示1、5、z、h四個字串中的任意乙個

[m-n]

表示從m到n的任意乙個字元

[0-9]

表示0-9的任意乙個數字

[0-9a-za-z]

表示任意數字或字母

|表示多重選擇,類似邏輯運算中的或運算

abc|xyz表示匹配字串「abc」或者「xyz」

例:

#!/bin/bash

echo

"input a character: "

read -n 1 char

# 如果此處需要用echo輸出的話就不能用read -n 1 因為沒有使用者輸入資料完成後是沒有換行符的

# -n 1 表示只讀取乙個字元,執行指令碼後 只要使用者輸入乙個字元 立即讀取結束 不用等使用者按下回車鍵

# 解決方法:在echo語句中手動新增換行符

shell中的case in 語句

和其它程式語言類似,shell 也支援兩種分支結構 選擇結構 分別是 if else 語句和 case in 語句。在 shell if else 一節中我們講解了 if else 語句的用法,這節我們就來講解 case in 語句。當分支較多,並且判斷條件比較簡單時,使用 case in 語句就比...

shell指令碼學習(十四) case in語句

格式 case expression in pattern 1 statement1 pattern 2 statement2 statementn esac 1 case in 和esac都是shell關鍵字,expression表示表示式,pattern表示匹配模式 2 expression既可...

shell 中的if語句

1 2 3 4 if a a 空格用 標示 then echo a a fi 最近幾天寫指令碼,遇到if語句時總是吃不準。這次總結一下。使用if語句有2中方式,一種是使用test命令另一種是使用 其中後者比較常用。方法一,使用test命令,這個命令返回乙個boolean值。1 test e data...