在shell编程里有时候需要出现交换界面,让使用者来选择要执行的功能,如下面所示,这时候就需要用到case和select进行配合
请选择功能:
1) 退出
2) 系统升级
3) 防火墙配置
4) tomcat部署
5) 待定
#?
case语法:
case 变量 in
条件1)
执行语句1;;
条件2)
执行语句2;;
*)
执行语句3;;
esac #就是case倒着写
select语法:
select 变量 in 列表
do
执行语句
break #如果需要退出循环,可加break
done
以上面为例,要想实现此功能,脚本如下:
echo "请选择功能:"
select var in "退出" "系统升级" "防火墙配置" "tomcat部署"
do
case $var in
"退出")
echo "谢谢使用!"
exit 0;;
"系统升级")
echo "系统升级开始,请耐心等待.....";;
"防火墙配置")
echo "防火墙正在进行配置,请稍后.....";;
"tomcat部署")
echo "采集程序开始部署,请耐心等待....."
*) #表示除前四种情况外都匹配这里
echo "选项无效,请重新输入!";;
esac
break
done
需要注意的是,如果在脚本里加了把报错信息输出到文件的语句:exec 2>test.log
则只会显示如下:
[root@localhost ~]# sh select_run.sh
请选择功能:
底下的选项就不会显示在屏幕上,这时就需要使用管道文件fifo解决