Select、Case

select循環與菜單

select循環主要用于創建菜單,按數字排序list指定的順序排序,并列出在標準輸出,利用PS3列出提示符進行輸入選擇

用法:

select VARIABLE in list
 do
    循環體命令
done

PS3提示語定義:

在腳本中腳本代碼的第一行加入即可

PS3=“提示語”

用戶輸入相應的數字,就會執行相對應的命令,用戶輸入的選項被保存在REPLY中

select經常和case配合使用,一個指定菜單,一個執行菜單指定的相對應的命令。

select是個無限循環,因此要記住用break命令退出循環,或者用exit命令結束腳本運行。

select與for循環類似,可以省略inlist,此時在執行腳本是指定參數為位置變量傳給select語句。

##############################################################################################################

多分支case語句

case語句和if elif else 語句一樣都是多分支條件語句,不過和if多分支條件語句不同的是,case語句只能判斷一種條件關系,而if else 語句可以判斷多種條件關系

用法:

case  $VARIABLE(變量名) in
    “值1”)
        ;;
    “值2”)
        ;;
    …………
esac

case語句支持glob風格的通配符進行模糊匹配(應用在“值1”|“值2"…..)

*:任意長度的任意字符

?:任意單個字符

[] : 指定范圍內的任意單個字符

a|b:條件1或條件2

select與case綜合示例:輸入指定命令,顯示對應的信息

#!/bin/bash
#
######定義函數開始##############

meminfo() {
    clear
    free -m
}
diskinfo() {
    clear
    df -k
}
logged() {
    clear
    who
}
######定義函數結束##############

######PS3定義提示語##############
PS3="input option (input "5" is help) :"

########select語句定義菜單列表#########
select opt in "display meminfo" "display diskinfo" "display logged user" "Exit program" "help";do
    case $opt in       
   //應用case語句,變量是select語句定義的菜單變量,case語句會一一進行匹配select的變量中的值
        "display meminfo")   //注意菜單上的名稱必須與case語句選項一致
            meminfo ;;         //調用相對應的函數
        "display diskinfo")    //如果select的值對應到此值,則指定相對應的函數程序
            diskinfo ;;      
       //雙分號(;;)為語句結束符,如果此語句匹配到依舊不退出,繼續向下匹配
        "display logged user")
            logged ;;
        "Exit program")
            break ;;
        "help")
            echo "Usage (1.mem|2.disk|3.loguser|4.exit|5.help)"
        ;;
        *)     //如果上方所有case語句都不能匹配到,則執行此條程序命令。
            echo "sorry,Error input!" ;;
     esac   //case語句結束
done      //select語句結束

原創文章,作者:Lii,如若轉載,請注明出處:http://www.www58058.com/38432

(0)
LiiLii
上一篇 2016-08-21
下一篇 2016-08-21

相關推薦

  • 第六周作業

    請詳細總結vim編輯器的使用并完成以下練習題 基本模式:     編輯模式,命令模式     輸入模式     末行模式         內置的命令行接口 打開…

    Linux干貨 2017-02-14
  • 磁盤和文件系統管理述

        我們知道一塊磁盤是可以被分區成多個分區的(partition),以Windows的觀點來看,你可能會有一顆磁盤并且將他分區成為C:, D:, E:盤,那個C, D,E就是分區。Linux的設備都是以文件的型態存在,磁盤設備接口的不同也早就了磁盤文件名的不同。即IDE接口的磁盤設備文件名都是/dev/hd[a-z…

    Linux干貨 2016-08-29
  • VPS服務器的購買使用

    ? ? ? ?Virtual Host Server(虛擬主機)是一個云計算服務,相比于傳統的購買服務器硬件方式搭建服務器,有著價格便宜,個性化定制配置,使用靈活等特點。按需求購買計算資源,只需要幾分鐘時間就可以在公網配置一個屬于自己的服務器。 ? ? ? ? 最著名的云計算服務提供商國外有Amazon,Google,vultr等等,國內有阿里云,騰訊云等等…

    2018-03-26
  • N25-第六周作業

      復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;               s/要查找的內容/替換為的內容/修飾符 %:全文,相當…

    Linux干貨 2017-02-13
  • Linux救援模式

        學習了Linux的啟動流程,為了加深理解,今天做了如下的實驗:刪除掉Linux系統在啟動過程中比較重要的幾個文件,查看啟動時出現的現象。加深對知識的理解。學習機器因為某些文件的缺失的修復方式。     一、刪除grub.conf    &nb…

    Linux干貨 2016-11-23
  • 正則表達式—正則表達式詳解

    grep使用正則表達式進行匹配時,將大大提高效率和精準性,正則表達式概括分為基本正則表達式和擴展正則表達式。 一、基本正則表達式   字符匹配元字符         .        &nb…

    Linux干貨 2016-07-04
欧美性久久久久