Unix / Linux Shell - select 循环

  • 简述

    select 循环提供了一种创建编号菜单的简单方法,用户可以从中选择选项。当您需要要求用户从选项列表中选择一个或多个项目时,它很有用。
  • 句法

    
    select var in word1 word2 ... wordN
    do
       Statement(s) to be executed for every word.
    done
    
    这里var是变量的名称,word1wordN是由空格(单词)分隔的字符序列。每次for 循环执行,变量 var 的值被设置为单词列表中的下一个单词, word1wordN.
    对于每个选择,将在循环内执行一组命令。这个循环是在ksh并已被改编成 bash。它不可用sh.
  • 例子

    这是一个简单的例子,让用户选择一种饮料 -
    
    #!/bin/ksh
    select DRINK in tea cofee water juice appe all none
    do
       case $DRINK in
          tea|cofee|water|all) 
             echo "Go to canteen"
             ;;
          juice|appe)
             echo "Available at home"
          ;;
          none) 
             break 
          ;;
          *) echo "ERROR: Invalid selection" 
          ;;
       esac
    done
    
    select 循环显示的菜单如下所示 -
    
    $./test.sh
    1) tea
    2) cofee
    3) water
    4) juice
    5) appe
    6) all
    7) none
    #? juice
    Available at home
    #? none
    $
    
    您可以通过如下更改变量 PS3 来更改选择循环显示的提示 -
    
    $PS3 = "Please make a selection => " ; export PS3
    $./test.sh
    1) tea
    2) cofee
    3) water
    4) juice
    5) appe
    6) all
    7) none
    Please make a selection => juice
    Available at home
    Please make a selection => none
    $