Shell编程select用法
select in 循环用来增强交互性,它可以显示出带编号的菜单,
用户输入不同的编号就可以选择不同的菜单,
并执行不同的功能(自动帮你将编号和你的取值列表里的元素对应)
select in是shell独有的一种循环,非常适合终端(Terminal)这样的交互场景,
C语言、C++、java、Python、C#等其他编程语言中是没有的
shell select in循环的用法如下:
select variable in value_listdo
statements
done
variable:变量 value_list:取值列表 in是shell中的关键字
例子如下:
[root@localhost select]# cat 01.sh
#!/bin/bash echo "What is your favourite OS?" select name in "Linux" "Windows" "Mac OS" "UNIX" "Android" do echo $name done echo "You have selected $name"
[root@localhost select]# sh 01.sh
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#? 1
# #?是用来提示用户输入菜单的编号(自己带的一个提示符),
#生成一个生成一个交互界面
Linux
#? 3
Mac OS
#? 4
UNIX
#? 5
Android
#? 6 #我们发现6并没有结束它。
#? 2
Windows
#? #直接回车,再显示一遍菜单,并没有结束
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#?
You have selected Windows
#再按一遍Ctrl + d(select in的输入结束)就结束了
#?是用来提示用户输入菜单的编号,
^D表示按下Ctrl+D组合键,它的作用是结束select in 循环
运行到select语句后,取值列表value_list中的内容会以菜单的形式显示出来,
用户输入菜单编号,就表示选中了某个值,
这个值就会赋给变量variable,
然后再执行循环体中的statements(do和done之间的部分)
每次循环时select都会要求用户输入菜单编号,
并使用环境变量PS3的值作为提示符,
PS3的默认值为#?,修改PS3的值就可以修改提示符
如果用户输入的菜单编号不在范围之内,
例如上面我们输入9,那么就会给variable赋一个空值,
如果用户输入一个空值(什么也不输入,直接回车),会重新显示一遍菜单
我们常将select in和case in一起配合使用
[root@localhost select]# cat 02.sh
#!/bin/bash echo "What is your favourite OS?" select name in "Linux" "Windows" "Mac OS" "UNIX" "Android" do case $name in "Linux") echo "Linux是一个类UNIX操作系统,它开源免费,运行在各种服务器设备和嵌入式设备。" break ;; "Window") echo "Windows是微软开发的个人电脑操作系统,它是闭源收费的。" break ;; "Mac OS") echo "Mac OS是苹果公司基于UNIX开发的一款图形界面操作系统,只运行在苹果提供的软件上。" break ;; "UNIX") echo "UNIX是操作系统的开山鼻祖,现在已经逐渐退出历史舞台,只应用在特殊场合。" break ;; "Android") echo "Android是由Google开发的手机操作系统,目前已经占据了70%市场份额系统不过。" break ;; *) break ;; esac done echo "You have selected $name
[root@localhost select]# sh 02.sh
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#? 1
Linux是一个类UNIX操作系统,它开源免费,运行在各种服务器设备和嵌入式设备。
You have selected Linux
[root@localhost select]# sh 02.sh
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#? 4
UNIX是操作系统的开山鼻祖,现在已经逐渐退出历史舞台,只应用在特殊场合。
You have selected UNIX