利用select語句可以非常方便的實現選單迴圈結構,其語法如下

select variable in list #將列表中的每一個選單項之前新增從1開始遞增的序號 #顯示環境變數PS3的值(存放的是引導使用者輸入的提示資訊) #使用者選擇的選單序號存在變數REPLY中,對應的List選單項的內容存放在variable變數中 do #使用者每選擇了一個選單項之後都會重新進入迴圈體 <commands> #執行語句塊 done #本次迴圈結束,重新進入下一次選單選擇迴圈

這樣看似乎不是很直觀,我們從一個例子入門

  1 # !/bin/bash
  2 
  3 PS3="select your pefer laguage:"
  4 select s in bash perl python ruby '(quit)'
  5   do
  6     case $s in
  7       bash|perl|python|ruby) echo "you select menu$RELAY):$s";;
  8       '(quit)') break ;;
  9       *) echo "please select correct" ;;
 10     esac
 11   done

很簡單的一個例子,就是通過迴圈選單體選擇我們喜歡的腳步語言。下面是執行結果。

chenfeihaodeMacBook-Pro:sh chenfeihao$ ./select_prefer_language.sh 
1) bash
2) perl
3) python
4) ruby
5) (quit)
select your pefer laguage:1
you select menu1):bash
select your pefer laguage:2
you select menu2):perl
select your pefer laguage:3
you select menu3):python
select your pefer laguage:5  
chenfeihaodeMacBook-Pro:sh chenfeihao$ 

可以看到每次迴圈開始前都會列印我們定義的PS3提示變數,而在REPLY變數中儲存的是選單項的序號。list中的每一項都對應了一個選單項,而由於select是一個無限迴圈所以提供了出口quit。

這樣我們就學會了怎麼使用select語法實現我們程式中的選單迴圈結構了。