shell 之 case。。。esac多分支選擇

2022-09-06 13:09:17 字數 1283 閱讀 4670

case分支屬於匹配執行的方式,它針對指定的變數預先設定乙個可能的取值,判斷該變數的實際取值是否與預設的某乙個值相匹配,如果匹配上了,就執行相應的一組操作,如果沒有任何值能夠匹配,就執行預先設定的預設操作。

語法:case 變數值 in

模式1)

命令序列1 ;;

模式2)

命令序列2 ;;

*)預設命令序列

esac

注意:1.在命令序列後一定要以 ;; 結束,最後乙個命令序列也可不寫。

2.在case分支寫完之後,要以esac結束。

例子:通過位置變數來獲取賦值

[root@gameserver1 shell]# vim case_test.sh

#!/bin/bash

case $1 in #用位置變數獲取值

start)

echo "start";;

stop)

echo "stop";;

other)

echo "other";;

*) #預設命令序列

echo "預設命令序列"

esac

執行指令碼,位置引數賦值start

[root@gameserver1 shell]# ./case_test.sh start

start #輸出start

執行指令碼,位置引數賦值stop

[root@gameserver1 shell]# ./case_test.sh stop

stop

執行指令碼,位置引數賦值restart  (case中沒有定義對應的restart模式)

[root@gameserver1 shell]# ./case_test.sh restart

預設命令序列 #當賦值case中沒有定義的模式時,則輸出的 *)預設命令序列

執行指令碼,位置引數不賦值

[root@gameserver1 shell]# ./case_test.sh

預設命令序列 #輸出預設序列

總結:當執行指令碼時,變數值==模式,則執行對應模式下的命令序列。

當執行指令碼時,變數值不存在case模式中,則執行預設命令序列。

當執行指令碼時,沒有指定變數的值,則執行預設命令序列。

常用於選單選擇,比如程式的啟動,停止,重啟,更新等,或者其他需要根據選擇來執行對應選項下的命令的場景。

shell程式設計 case esac分支語句

case esac分支語句就類似於c語言的switch case 分支語句,但是呢語法又有些不同我們先來看乙個簡單的例子 然後我們再來講解一下各個 關鍵字元 或者關鍵字的含義 這裡read yes or no等待使用者輸入乙個字串 程序阻塞 然後 case yes or no in 這個 in 表示...

shell之for和if實現批量替換多目錄下的檔案

問題背景 生產環境的專案資料夾眾多,每個專案都會有乙個資料夾,現在要批量替換每個資料夾下的一張模板 如圖,我們要替換每乙個資料夾下的01.jpg shell 指令碼 bin bash 遍歷需要替換檔案的目錄 for i in ls test project do 判斷是不是目錄 if d test ...

shell多引數處理技巧

mark下,以備後用shell程式設計,難免會碰到多引數,多引數處理技巧如下 while gt 0 do case 1 in h help print help exit 0 v version print version exit 0 l listen listening address 2 sh...