Linux Bash Shell學習(十二):流程式控制制——select

來源:互聯網
上載者:User

  本文也即《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 $@。通過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操作相關文章

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.