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来更改select循环显示的提示:

$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
$
unix-shell-loops.htm
广告