shell腳本系列:select語句
阿新 • • 發佈:2020-08-26
select in 迴圈用來增強互動性,它可以顯示出帶編號的選單,使用者輸入不同的編號就可以選擇不同的選單,並執行不同的功能。
#?
用來提示使用者輸入選單編號;^D
表示按下 Ctrl+D 組合鍵,它的作用是結束 select in 迴圈。
執行到 select 語句後,取值列表 value_list 中的內容會以選單的形式顯示出來,使用者輸入選單編號,就表示選中了某個值,這個值就會賦給變數 variable,然後再執行迴圈體中的 statements(do 和 done 之間的部分)。
每次迴圈時 select 都會要求使用者輸入選單編號,並使用環境變數 PS3 的值作為提示符,PS3 的預設值為#?
如果使用者輸入的選單編號不在範圍之內,例如上面我們輸入的 9,那麼就會給 variable 賦一個空值;如果使用者輸入一個空值(什麼也不輸入,直接回車),會重新顯示一遍選單。
注意,select 是無限迴圈(死迴圈),輸入空值,或者輸入的值無效,都不會結束迴圈,只有遇到 break 語句,或者按下 Ctrl+D 組合鍵才能結束迴圈。
格式
select variable in value_list
do
statements
done
示例
#!/bin/bash echo "What is your favourite OS?" select name in "Linux" "Windows" "Mac OS" "UNIX" "Android" do case $name in "Linux") echo "Linux是一個類UNIX作業系統,它開源免費,執行在各種伺服器裝置和嵌入式裝置。" break ;; "Windows") echo "Windows是微軟開發的個人電腦作業系統,它是閉源收費的。" break ;; "Mac OS") echo "Mac OS是蘋果公司基於UNIX開發的一款圖形介面作業系統,只能執行與蘋果提供的硬體之上。" break ;; "UNIX") echo "UNIX是作業系統的開山鼻祖,現在已經逐漸退出歷史舞臺,只應用在特殊場合。" break ;; "Android") echo "Android是由Google開發的手機作業系統,目前已經佔據了70%的市場份額。" break ;; *) echo "輸入錯誤,請重新輸入" esac done