http://blog.csdn.net/dreamtdp/article/details/8048720
case語句使用於需要進行多重分支的應用情況
格式:
case $變量名 in
模式1) 命令序列1 ;; 模式2) 命令序列2 ;; *) 默認執行的命令序列 ;; esac
case語句結構特點如下: case行尾必須為單詞 in 每個模式必須以右括號 ) 結束 雙分號 ;; 表示命令序列結束 case語句結構特點如下: 匹配模式中可是使用方括號表示一個連續的范圍,如[0-9];使用豎杠符號“|”表示或。 最后的“*)”表示默認模式,當使用前面的各種模式均無法匹配該變量時,將執行“*)”后的命令序列。
case語句實例:由用戶從鍵盤輸入一個字符,並判斷該字符是否為字母、數字或者其他字符, 並輸出相應的提示信息。
#!/bin/bash read -p "press some key ,then press return :" KEY case $KEY in [a-z]|[A-Z]) echo "It's a letter." ;; [0-9]) echo "It's a digit." ;; *) echo "It's function keys、Spacebar or other ksys." esac
######################################################
case word in [ pattern [ | pattern ] ... ) list ;; ] ... esac
case/esac的標准用法大致如下:
case $arg in
pattern | sample) # arg in pattern or sample
;;
pattern1) # arg in pattern1
;;
*) #default
;;
esac
arg是您所引入的參數,如果arg內容符合pattern項目的話,那麽便會執行pattern以下的程式碼,而該段程式碼則以兩個分號";;"做結尾。
可以注意到"case"及"esac"是對稱的,如果記不起來的話,把"case"顛倒過來即可。
例一 : paranoia
#!/bin/sh case $1 in start | begin) echo "start something" ;; stop | end) echo "stop something" ;; *) echo "Ignorant" ;; esac
$1....http://www.cnblogs.com/sj521/p/5810287.html
執行
[foxman@foxman bash]# chmod 755 paranoia
[foxman@foxman bash]# ./paranoia
Ignorant
[foxman@foxman bash]# ./paranoia start
start something
[foxman@foxman bash]# ./paranoia begin
start something
[foxman@foxman bash]# ./paranoia stop
stop something
[foxman@foxman bash]# ./paranoia end
stop something
例二 : inetpanel
許多的daemon都會附上一個管理用的Shell Script,像BIND就附上ndc,Apache就附上apachectl。這些管理程式都是用shell script來寫的,以下示一個管理inetd的shell script。
#!/bin/sh case $1 in start | begin | commence) /usr/sbin/inetd ;; stop | end | destroy) killall inetd ;; restart | again) killall -HUP inetd ;; *) echo "usage: inetpanel [start | begin | commence | stop | end | destory | restart | again]" ;; esac
例三 : 判斷系統
有時候,您所寫的Script可能會跨越好幾種平台,如Linux、FreeBSD、Solaris等等,而各平台之間,多多少少都有不同之處,有時候需要判斷目前正在那一種平台上執行。此時,我們可以利用uname來找出系統資訊。
#!/bin/sh SYSTEM=`uname -s` case $SYSTEM in Linux) echo "My system is Linux" echo "Do Linux stuff here..." ;; FreeBSD) echo "My system is FreeBSD" echo "Do FreeBSD stuff here..." ;; *) echo "Unknown system : $SYSTEM" echo "I don't what to do..." ;; esac