Linux Bash Shell學習(十二) 流程控制——select
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
本文也即《Learning the bash Shell》3rd Edition的第五章Flow Control之讀書筆記之四,但我們將不限於此。flow control是任何程式語言中很常用的部分,也包括了case。在這裡,我們將繼續學習他們。
select和其他流控制不一樣,在C這類變成語言中沒有類似的語句(C中的select用於socket,是完全不同的含義,不是流控制)。格式如下:
select name [in list ]
do
statements that can use $name...done
和for的格式相似,有和for一樣,可以刪除in list,即使用預設的in [email protected]。通過select,我們很容易建立選單:
執行時的時候,會根據list給出選單,使用者選擇之後執行statement,所選擇的,放置在$name,執行完之後,再次給出選單,等等使用者執行,一直迴圈下去,使用者如果向跳出迴圈,可以使用break,下面是一個基本例子:
# select Test Sample
# Test 1: Basic Usage Test
function test
{
echo 'select test 1'
mystack='a 123 red '
select entry in $mystack; do
#如果是有效的選擇,則$entry中帶有list中的值,如果是無效的選擇,則為null,因此經常會根據此判斷選擇是否有效,例如用if [ $entry ]。
if [ $entry ]; then
echo "You select the choice '$entry'"
break **注:由於select是個迴圈,通過break來跳出迴圈
else
echo "Invaild selection"
fi
done
}test
執行結果
$./select-test
select test 1 **注:下面開始顯示list中元素,並以選單的方式出現*
1) a
2) 123
3) red
#? h **注:出現提示符號#?,等待使用者輸入選擇,如果直接回車,則再次顯示選單
Invaild selection
#? 3
You select the chioce 'red'
在Linux Bash Shell學習(五):特殊檔案、別名、選項和引數中對於提示符,提到了PS1和PS2,在select中,給出的提示符,即上面例子中的#?就是PS3,我們可以在shell中對PS3進行重新定義。例如PS3=”Please select a choice : ”
執行完statement,將繼續出現提示符,等待下次輸入,如果需要從select的迴圈中退出來,使用break。如果直接鍵入[回車],則再次顯示選單。
相關連結: 我的Linux操作相關文章