在前面的文章中已经有了一个菜单脚本,那么实现的方法是使用的cat方法.称为(here文档),在这里给大家介绍另外一种方法,那么就是今天的select循环
select循环呢,主要用于创建菜单,那么语法如下:
#!/bin/bash select 变量名 in [ 菜单列表] do 指令1.... done
#!/bin/bash select name in yankerp zhangsan lisi wangwu xiaoliu do echo $name done
剖析:在以上这个脚本中我们使用了select循环,那么如下:
select name in xxx 在这里的name就是一个变量 那么in 后面的就是取值列表
do
echo $name 那么这里就是输出name变量的值 那么如下:
done
[root@shell-yankerp ~]# sh select.sh 1) yankerp 这里就是菜单 2) zhangsan 3) lisi 4) wangwu 5) xiaoliu #? 1#下面的是选项,那么如果输入1 那么就打印yankerp 以此类推 yankerp #? 2 zhangsan #? 3 lisi #? 4 wangwu #? 5 xiaoliu #? 6 #如果输入的是错误的,那么就是输出空.....
通过以上例子,我们发现它的提示符并不是很美丽,默认是#? 那么在以下的实例中,来修改 如下:
#!/bin/bash PS3="please select a num from menu:" select name in yankerp zhangsan lisi wangwu xiaoliu do echo $name done
以上使用了PS3 就是来控制select循环的提示符 输出如下:
select循环基本用法如下:
#!/bin/bash . /etc/init.d/functions ROOT=0 path=/usr/local/src if [ "$UID" -ne $ROOT ];then action "请您使用root用户..." /bin/false exit 1 fi function main(){ PS3=`echo "请您输入你想安装的服务:"` select var in "[install Apache]" "[install Nginx]" "[install LNMP]" do case "$var" in "[install Apache]") echo 开始安装Apache! ;; "[install Nginx]") echo 开始安装Nginx! ;; "[install LNMP]") echo 开始安装LNMP ;; esac done } main
输出如下:
[root@shell-yankerp yankerp]# sh select.sh 1) [install Apache] 2) [install Nginx] 3) [install LNMP] 请您输入你想安装的服务:1 开始安装Apache! 请您输入你想安装的服务:2 开始安装Nginx! 请您输入你想安装的服务:3 开始安装LNMP 请您输入你想安装的服务:4
其实select就是用于菜单选项的一些脚本,不过我个人还是喜欢用cat那样的方式,可能是个人习惯吧。
本次就分享到这里吧,希望对您有所帮助