select循环语句

时间:2019-04-16 23:59:05  来源:igfitidea点击:

语法

select varName in list
do
    command1
    command2
    ....
    ......
    commandN
done

或者将select和case语句结合

select varName in list
do
	case $varName in
		pattern1)
			command1;;
		pattern2)
			command2;;
		pattern1)
			command3;;
		*)
			echo "Error select option 1..3";;
	esac			
done
  1. select命令使用PS3变量打印其提示符。
  2. 在屏幕上,列表中的每个单词前面都有一个数字。
  3. 如果输入和来自列表的单词对应的数字相同,则varName被设置为该单词。
  4. 如果输入为空,则重新显示单词和提示符。
  5. 如果读取EOF(文件结束),则完成命令。
  6. 循环继续,直到遇到中断(CTRL+C)。

示例

#!/bin/bash
# 设置PS3提示符
PS3="请输入航天飞机名称以获得更多信息 : "

# 设置航天飞机列表
select shuttle in columbia endeavour challenger discovery atlantis enterprise pathfinder
do
    echo "$shuttle selected"
done

退出select循环

可以通过按 Ctrl+C或添加exit选项退出select loop语句:

#!/bin/bash
# Set PS3 prompt
PS3="Enter the space shuttle to get quick information : "
 
# set shuttle list
# exit option 
select shuttle in columbia endeavour challenger discovery atlantis enterprise pathfinder exit
do
	case $shuttle in
		columbia)
			echo "--------------"
			echo "哥伦比亚号航天飞机在NASA的轨道舰队第一spaceworthy航天飞机。" 
			echo "--------------" 
			;; 
		努力)
			echo "--------------" 		
			echo "航天飞机努力是在航天飞机3个目前正在运作轨道器之一"。 
			echo "--------------" 		
			;; 
		挑战者) 
			echo "--------------" 				
		    echo "挑战者号航天飞机是美国航空航天局的第二次航天飞机轨道器将投入使用。" 
			echo "--------------" 				    
			;; 
			 "--------------" 		
			echo "发现已成为第三颗运行轨道器,现在是服役中最古老的轨道器。" 
			echo "--------------" 							
			;; 		
		亚特兰蒂斯)
			echo "--------------" 		
			echo "亚特兰蒂斯是建立在第四操作穿梭"。
			echo "--------------" 							
			;; 
		企业)
			echo  "--------------" 		
			echo  "航天飞机企业是第一个航天飞机轨道器。" 
			echo "--------------" 							
			;; 		
		pathfinder )
			echo  "--------------" 		
			echo "航天飞机轨道器探路者是由钢和木头制成的航天飞机模拟器。"
			echo "--------------"							
			;;
        exit)
        	echo "Bye!"
            break
            ;;
		*)		
			echo "错误:请重试(选择1..8)!"
		;;		
	esac
done