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