shell之select语句
1. select in 语句
select in 循环⽤来增强交互性,它可以显⽰出带编号的菜单,⽤户输⼊不同的编号就可以选择不同的菜单,并执⾏不同的功能
select in 是 Shell 独有的⼀种循环,⾮常适合终端(Terminal)这样的交互场景,C语⾔、C++、Java、Python、C# 等其它编程语⾔中是没有的
Shell select in 循环的⽤法如下:
select variable in value_list
do
statements
done
variable 表⽰变量,value_list 表⽰取值列表,in 是 Shell 中的关键字
我们先来看⼀个 select in 循环的例⼦
[root@server1 mnt]# sh test.sh
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#? 1
Linux
#? 2
Windows
#?
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#?
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#?
You have selected Windows
[root@server1 mnt]# cat test.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"
#?⽤来提⽰⽤户输⼊菜单编号;^D表⽰按下 Ctrl+D 组合键,它的作⽤是结束 select in 循环
运⾏到 select 语句后,取值列表 value_list 中的内容会以菜单的形式显⽰出来,⽤户输⼊菜单编号,就表⽰选中了某个值,这个值就会赋给变量 variable,然后再执⾏循环体中的 statements(do 和 done 之间的部分)。
每次循环时 select 都会要求⽤户输⼊菜单编号,并使⽤环境变量 PS3 的值作为提⽰符,PS3 的默认值为#?,修改 PS3 的值就可以修改提⽰符。
如果⽤户输⼊的菜单编号不在范围之内,例如上⾯我们输⼊的 9,那么就会给 variable 赋⼀个空值;如果⽤户输⼊⼀个空值(什么也不输⼊,直接回车),会重新显⽰⼀遍菜单
select in 通常和 case in ⼀起使⽤,在⽤户输⼊不同的编号时可以做出不同的反应
[root@server1 mnt]# sh test.sh
What is your favourite OS?
shell界面
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#? 1
Linux是⼀个类UNIX操作系统,它开源免费,运⾏在各种服务器设备和嵌⼊式设备。
[root@server1 mnt]# cat test.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
;;
"Windows")
echo "Windows是微软开发的个⼈电脑操作系统,它是闭源收费的。"
break
;;
"Mac OS")
echo "Mac OS是苹果公司基于UNIX开发的⼀款图形界⾯操作系统,只能运⾏与苹果提供的硬件之上。"            break
;;
"UNIX")
echo "UNIX是操作系统的开⼭⿐祖,现在已经逐渐退出历史舞台,只应⽤在特殊场合。"
break
;;
"Android")
echo "Android是由Google开发的⼿机操作系统,⽬前已经占据了70%的市场份额。"
break
;;
*)
echo "输⼊错误,请重新输⼊"
esac
done