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三剑客