1. 程式人生 > >Linux Bash Shell學習(十二) 流程控制——select

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操作相關文章

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述