shell編程之select
select控制結構(在tcsh中不可用)基于Korn Shell中的控制結構 select語句首先顯示一個菜單,然后根據用戶的選擇給變量賦予相應的值,最后執行一系列命令
其語法如下:
select varname in list
do
commands
done
select 表達式是一種bash的擴展應用,動作包括: 自動用1,2,3,4列出菜單 (沒有echo指令,自動顯示菜單) 自動read輸入選擇 (沒有 read指令,自動輸入) 賦值給變量 (沒有賦值指令,自動輸入數字后,賦值字符串給變量)
select結構顯示arg項的菜單。加入忽略關鍵字in和參數列表,select控制語句就用位置參數來取代arg項。select的菜單格式化為在每一項前加一個數字select結構用變量LINES和變量COLUMNS的值來確定顯示區的大?。↙INES的默認值為24,COLUMNS的默認值為80)。
在select語句輸出菜單后,它就會顯示出PS3的值,select提示符PS3的默認值為“?#”,但一般將其設置為一個更有意義的值。
在PS3提示符后輸入一個合法的數字(在菜單范圍中),select語句就把varname設置為與該數字對應的參數。非法的輸入會使shell把varname設置為空,在這兩種情況下,select將把用戶的響應存儲在關鍵字變量REPLY中,然后執行do與done之間的命令。若只按RETURN鍵而沒有做任何選擇,shell就會重新顯示菜單和PS3提示符。
舉例說明:
腳本:
8 #!/bin/bash 9 PS3="What sports do you like?" 10 select menu in basketball football tableball 11 do 12 case $menu in 13 basketball) 14 echo "$menu" is your favorite sport! 15 ;; 16 football) 17 echo "$menu" is your favorite sport! 18 ;; 19 tableball) 20 echo "$menu" is your favirite sport! 21 ;; 22 *) 23 echo "Your input is false!" 24 break 25 ;; 26 esac 27 done
執行結果:
[root@localhost bin]# select.sh 1) basketball 2) football 3) tableball What sports do you like?basketball Your input is false! [root@localhost bin]# select.sh 1) basketball 2) football 3) tableball What sports do you like?1 basketball is your favorite sport! What sports do you like?2 football is your favorite sport! What sports do you like?3 tableball is your favirite sport! What sports do you like?g Your input is false!
原創文章,作者:YOUNG,如若轉載,請注明出處:http://www.www58058.com/39003