0
点赞
收藏
分享

微信扫一扫

Shell select in语句

墨春 2022-08-17 阅读 176


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 和 ​​for in​​​ 的语法是多么地相似。
 select in 循环的例子:

 

#!/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"


运行结果:
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#? 4↙
You have selected UNIX
#? 1↙
You have selected Linux
#? 9↙
You have selected
#? 2↙
You have selected Windows
#?^D

 ​​#?​​​用来提示用户输入菜单编号;​​^D​​表示按下 Ctrl+D 组合键,它的作用是结束 select in 循环。

运行到 select 语句后,取值列表 value_list 中的内容会以菜单的形式显示出来,用户输入菜单编号,就表示选中了某个值,这个值就会赋给变量 variable,然后再执行循环体中的 statements(do 和 done 之间的部分)。

每次循环时 select 都会要求用户输入菜单编号,并使用环境变量 PS3 的值作为提示符,PS3 的默认值为​​#?​​​,修改 PS3 的值就可以修改提示符。

如果用户输入的菜单编号不在范围之内,例如上面我们输入的 9,那么就会给 variable 赋一个空值;如果用户输入一个空值(什么也不输入,直接回车),会重新显示一遍菜单。

注意,select 是无限循环(死循环),输入空值,或者输入的值无效,都不会结束循环,只有遇到 break 语句,或者按下 Ctrl+D 组合键才能结束循环。

[root@www ~]# cat select.sh 
#!/bin/bash

function nginx (){
echo "start install nginx"
}

select i in install_nginx install_mysql install_php
do

case $i in
install_nginx)
echo "install_nginx"
nginx
break
;;
install_mysql)
echo "install_mysql"
break
;;
install_php)
echo "install_php"
break
;;
*)

echo "not match"
break
;;
esac

done




[root@www ~]# ./select.sh
1) install_nginx
2) install_mysql
3) install_php
#? 1
install_nginx
start install nginx

 

举报

相关推荐

0 条评论