Linux Shell編程case語句

來源:互聯網
上載者:User

Linux Shell編程case語句  case語句適用於需要進行多重分支的應用情況。        case分支語句的格式如下:            case $變數名 in                模式1)            命令序列1            ;;                模式2)            命令序列2         ;;                 *)            預設執行的命令序列     ;;             esac         case語句結構特點如下:        case行尾必須為單詞“in”,每一個模式必須以右括弧“)”結束。        雙分號“;;”表示命令序列結束。        匹配模式中可是使用方括弧表示一個連續的範圍,如[0-9];使用豎杠符號“|”表示或。        最後的“*)”表示預設模式,當使用前面的各種模式均無法匹配該變數時,將執行“*)”後    的命令序列。         case語句執行個體:由使用者從鍵盤輸入一個字元,並判斷該字元是否為字母、數字或者其他字元,    並輸出相應的提示資訊。#!/bin/bashread -p "press some key ,then press return :" KEYcase $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   執行 [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  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.