shell编程——流控制case和select

在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解决

原文地址:https://www.cnblogs.com/dengtr/p/5027367.html