Linux shell指令碼 case語句

2021-10-13 20:51:57 字數 2347 閱讀 8023

case語句用於條件判斷,判斷乙個變數的不同取值

case 變數值 in

匹配模式1)

命令序列1

;; 匹配模式2)

命令序列2

;;........

........

*) #表示不是以上模式則執行

命令序列

;;esac

case行必須以「in」結尾

匹配模式必須以「)」結尾

「;;」 雙分號表示命令序列結束

「*)」表示預設模式,「 * 」於萬用字元含義相同

首先使用「變數值」與匹配模式1進行比較,如果值相同則執行該模式命令序列,直至「;;」號後跳轉esac,結束分支。如果「變數值」與匹配模式1不同,則與匹配模式2進行匹配取值,如果值相同則執行該模式命令序列,直至「;;」號後跳轉esac,結束分支。如果「變數值」與匹配模式2不同,則繼續匹配下個匹配模式,以此類推。如果找到不到匹配相同的值,則執行「*)」模式後的命令序列,直至esac結束分支。

read命令從鍵盤讀取變數的值,該命令可以一次讀取多個變數的值,變數和輸入的值都需要使用空格隔開。

read 命令詳解:

指令碼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」則繼續檢測匹配,匹配完所有匹配模式分支沒有相同的,則執行預設「*)」輸出你輸入的是其他字元。

Linux Shell指令碼基礎

shell指令碼在處理自動迴圈或大的任務方面可節省大量時間,且功能強大。任何指令碼都可能有注釋,加注釋需要此行的第乙個字元為 直譯器對此行不予解釋。指令碼不是複雜的程式,它是按行解釋的。指令碼第一行總是以 bin sh開始,這段指令碼通知shell使用系統上的 bourne shell直譯器。指令碼...

linux shell指令碼犯錯

指令碼裡犯了錯 oracle it shell value 1 oracle it shell value 1 bash value command not found oracle it shell value 3 bash value command not found oracle it sh...

Linux shell 指令碼例項

1.寫乙個指令碼,利用迴圈計算10的階乘 2.寫乙個指令碼,執行後,列印一行提示 please input a number 要求使用者輸入數值,然後列印出該數值,然後再次要求使用者輸入數值。直到使用者輸入 end 停止 執行指令碼方法 nuhup sh route.sh 注意前面要用上nohup,...