shell select in 条件结构

select in类似于for in循环,两者的区别是:for循环仅仅是循环,而select则生成一个菜单选择式的交互环境,让菜单的生成变得更加简单。

select 变量名 in 选项1 选项2 选项3

shell会将in后面的数值列表扩展成一个菜单选项列表,并且每个选项前面都会自动添加一个可供选择的数字序号。以顾客点菜为例,在一个有限值的数值列表中,不断提示用户输入选择,然后根据用户的选择执行不同的操作。

#!/bin/bash

echo which day do you like?
echo please choose:

select time in yesterday today tomorrow
do 
    echo your choice is: $time
done

在上面的脚本中,我们实现了一个交互式的菜单选择,select根据用户的不同输入,在可供选择的数值列表中选中指定的值:

root@pc:/home/demo# ./hello.sh 
which day do you like?
please choose:
1) yesterday
2) today
3) tomorrow
#? 1
your choice is: yesterday
#? 2
your choice is: today
#? 3
your choice is: tomorrow
#? ^C
root@pc:/home/demo#

通过运行结果可以看到,select会将 in后面的数值列表生成一个有编号的菜单,#?提示符用来提醒顾客输入菜单的编号,用户输入编号后回车,select就可以根据用户输入的编号来打印数值列表中选中的值了。

selece 循环和for循环的另一个不同之处是:select是个死循环,会一直循环下去,除非用户使用ctrl+c终止程序,循环才会结束。

《Linux三剑客》视频教程:Linux下开发工具vim、Git、Makefile、autotools、qemu、debug精讲,从零开始一步一步写项目的Makefile,提供企业级Makefile模板,Git操作实战,vim从新手到高手,一步一步打造类似Source Insight的IDE!详情点击:王利涛老师个人淘宝店:Linux三剑客