Shell編程之case語句的使用講解,shell編程case語句

來源:互聯網
上載者:User

Shell編程之case語句的使用講解,shell編程case語句

大家好,今天給大家帶來的是Shell編程之case語句的使用!

其實case語句還是很好理解的,在shell編程中,if語句有它的文法,函數也有它的文法,那麼在我們shell編程中的case語句也是有它的文法的,如下:

case 變數名 in值1)  指令1;;值2)  指令2;;值3)  指令3;;esac

在以上的代碼中我們發現,以case開頭,以esac結尾,就像我們的if語句,以if開頭以fi結束時一樣的。

例2:

case "找老公條件" in 家裡有房子)嫁給你...;; 家庭有背景)嫁給你...;; 很努力吃苦)    那麼我們可以先談男女朋友..;;esac

好了接下來我們實踐,其實文法就是上面的一些基本文法,那麼我麼在實踐中來體會case到底有什麼用

其實自我認為case語句更適合一些菜單選項的指令碼,那麼我們先用if語句寫一個菜單指令碼如下:

#!/bin/bash#!/bin/bash# Date: 4:42 2018-2-5# Mail: ywyankerp@163.com# Founder: # Describe: This is a one - button installation service script function CDAN(){cat << yankerp  1.米飯2.麵條3.包子yankerp}CDANread -p 請您輸入您今天要吃什麼: NUMexpr $NUM + 1 &>/dev/nullif [ "$?" -ne 0 ]  then    echo "請您輸入{1|2|3}"     exit 1fiif [ "$NUM" -eq 1 ]   then     echo "小二,來一碗米飯"elif [ $NUM -eq 2 ]   then     echo "小二,來一碗麵條"elif [ "$NUM" -eq 3 ]   then     echo "小二,來一鍋包子"fi

首先我們看到我們上面的if語句,是不是感覺有點繁瑣,那麼接下來我們使用case語句來實現 如下:

#!/bin/bash#!/bin/bash# Date: 4:42 2018-2-5# Mail: ywyankerp@163.com# Founder: # Describe: This is a one - button installation service script function CDAN(){cat << yankerp  1.米飯2.麵條3.包子yankerp}CDANread -p 請您輸入您今天要吃什麼: NUMexpr $NUM + 1 &>/dev/nullif [ "$?" -ne 0 ]  then    echo "請您輸入{1|2|3}"     exit 1ficase $NUM in        1)          echo "小二,來一碗米飯"        ;;        2)          echo "小二,來一碗麵條"        ;;        3)          echo "小二,來一鍋包子"        ;;esac

剖析時刻:

#!/bin/bash#!/bin/bash# Date: 4:42 2018-2-5# Mail: ywyankerp@163.com# Founder: # Describe: This is a one - button installation service script function CDAN(){   #定義一個CDAN的函數cat << yankerp     1.米飯2.麵條3.包子yankerp}CDAN             #調用CDAN函數read -p 請您輸入您今天要吃什麼: NUM   #輸入一條提示,然後把使用者輸入的字串賦值給變數NUMexpr $NUM + 1 &>/dev/null          # 使用數值運算命令expr來確定使用者輸入的是否是數值if [ "$?" -ne 0 ]                  #如果使用者輸入的不是數值  then            #那麼    echo "請您輸入{1|2|3}"     #列印出 1 2 3     exit 1              #最後退出指令碼fi                #結束if語句case $NUM in       #這裡就是我們的case語句了,簡單理解,在NUM這個變數中        1)              #如果使用者輸入的是1          echo "小二,來一碗米飯"       #那麼就輸出一行來一碗米飯        ;;        2)                          #如果在NUM變數中使用者輸入的是2          echo "小二,來一碗麵條"   #那麼繼續列印此內容        ;;        3)                           #以此類推          echo "小二,來一鍋包子"        ;;esac             #最後使用esac結束

覺得不夠養眼?沒有關係如:

我們發現,在多個選項的這些指令碼中呢,還是使用case語句是比較方便合適的。

那麼我們掌握了基本的文法和它的一些功能,那麼我們可以結合函數+case語句來完成一個菜單式的安裝指令碼如下:

#!/bin/bash# Date: 4:42 2018-2-5# Mail: ywyankerp@163.com# Founder: # Describe: This is a one - button installation service script function CDAN(){cat << yankerp  +------------------------------------------------+|                                                ||        _o0o_          1. 安裝Nginx             ||        08880          2. 安裝Apache            ||       88"."88         3. 安裝MySQL             ||       (|-_-|)         4. 安裝PHP               ||        0\=/0          5. 部署LNMP環境          ||      __/   \__        6. 安裝zabbix監控        ||     ‘\   ///‘         7. 退出此管理程式        ||    / Linux一鍵 \      8. 關閉電腦            ||  ||    Server   ||    ======================   |  |  \        ////         一鍵安裝服務            ||   |||  i i i    |||               by Yankerp   ||   ___        ___      ======================   ||___‘.  /--.--\ .‘___                            |+------------------------------------------------+yankerp}CDAN. /etc/init.d/functionsBASE_DIR=/usr/local/srcread -p "請您輸入1-8任一字元:" NUMexpr $NUM + 1 &>/dev/nullif [ "$?" -ne 0 ]  then    echo "請您輸入{1|2|3|4|5|6|7|8}"    exit 1fifunction Nginx_server (){echo "開始安裝Nginx請稍後...."yum install -y gcc gcc-c++ pcre-devel zlib-devel openssl-devel &>/dev/null    cd $BASE_DIR && wget http://nginx.org/download/nginx-1.12.2.tar.gz &>/dev/null  && useradd -M -s /sbin/nologin nginx && \tar zxf nginx-1.12.2.tar.gz && cd $BASE_DIR/nginx-1.12.2/ && \ ./configure  --prefix=/usr/local/nginx --with-http_dav_module--with-http_stub_status_module --with-http_addition_module --with-http_sub_module  --with-http_flv_module --with-http_mp4_module--with-pcre --with-http_ssl_module --with-http_gzip_static_module  --user=nginx --group=nginx &>/dev/nullif [ "$?" -eq 0 ]  thenmake && make install &>/dev/nullfiif [ -f /usr/local/nginx/sbin/nginx ];then    ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin && nginx && echo "Nginx安裝成功!"fi}           function Apache_server (){echo "開始安裝Apache請稍後"yum install httpd -y &>/dev/nullif [ "$?" -eq 0 ]  then     echo "Apache安裝成功!"  else    echo "Apache安裝失敗!"  fi}case $NUM in1)  Nginx_server;;2)  Apache_server;;esac

運行結果如下:

以上指令碼大家可以參考參考,很簡單實現,那麼接下來在來一個案例

實戰2:編程Nginx啟動指令碼

編譯安裝的Nginx是沒有啟動指令碼的,這時候我們可以選擇自己寫一個,在這裡我用我的思路給大家解釋整個過程雖然不是很規範,希望還是能夠協助到你如下:

#!/bin/bashBASE_DIR=/usr/local/nginx/sbin/PID=/usr/local/nginx/logs/nginx.pid#no1.判斷是否root使用者登入if [ "$UID" -ne 0 ]  then    echo "請您使用root使用者登入!!!"  exit 1fi. /etc/init.d/functions #判斷使用者輸入的傳參個數if [ "$#" -ne 1 ]    then       echo "/bin/bash $0 {start|stop|restart}"exit 1fi#編寫啟動Nginx函數function start (){if [ `netstat -anput | grep nginx | wc -l` -eq 0 ]   then     $BASE_DIR/nginxfi   if [ "$?" -eq 0 ]     then       action "Nginx啟動成功!" /bin/true     else       action "Nginx啟動失敗!" /bin/false   fi}#編寫停止Nginx函數function stop (){if [ `netstat -anput | grep nginx | wc -l` -ne 0 ]   then     $BASE_DIR/nginx -s stopfi   if [ "$?" -eq 0 ]      then      action "Nginx停止成功!" /bin/true      else        action "Nginx停止失敗!" /bin/false   fi}#編寫case語句 使用特殊的位置變數$1來判斷使用者輸入的內容case  $1 instart)      start;;stop)      stop;;        restart)      stop      start;;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.