shell腳本系列:select語句


select in 循環用來增強交互性,它可以顯示出帶編號的菜單,用戶輸入不同的編號就可以選擇不同的菜單,並執行不同的功能。

#?用來提示用戶輸入菜單編號;^D表示按下 Ctrl+D 組合鍵,它的作用是結束 select in 循環。

運行到 select 語句后,取值列表 value_list 中的內容會以菜單的形式顯示出來,用戶輸入菜單編號,就表示選中了某個值,這個值就會賦給變量 variable,然后再執行循環體中的 statements(do 和 done 之間的部分)。

每次循環時 select 都會要求用戶輸入菜單編號,並使用環境變量 PS3 的值作為提示符,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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM