【shell 脚本 菜单多选】

shell 脚本菜单多选项

#!/bin/bash

#定义输出颜色的功能
rmsg() { echo -e "\033[31m$*\033[0m"; }
gmsg() { echo -e "\033[32m$*\033[0m"; }
bmsg() { echo -e "\033[34m$*\033[0m"; }

#定义菜单的字典 和 选择的字典
declare -A options
declare -A choices

#从options 里面获取的keys 顺序会变化, 所以这里写个数组直接定义菜单顺序
keys=(0 1 2 3 4 5 6 7 8 9 x o)

#定义菜单选项
options[0]="AAAA"
options[1]="BBBB"
options[2]="CCCCC"
options[3]="DDDDD"
options[4]="EEEEE"
options[5]="FFFF"
options[6]="GGGG"
options[7]="HHHHH"
options[8]="IIIII"
options[9]="JJJJJ"
options['x']="KKKKK"
options['o']="LLLLL"

#定义错误信息变量
ERROR=" "

#清理显示
clear

#显示菜单
function MENU {
  bmsg "菜单选项"
    for NUM in ${keys[*]}; do
        gmsg "[""${choices[$NUM]:- }""]" $NUM") ${options[$NUM]}"
    done
    rmsg "$ERROR"
}

#循环菜单达到多选目的
while MENU && read -e -p "根据菜单选择需要部署/取消,按Enter结束: " -n1 SELECTION && [[ -n "$SELECTION" ]]; do
    clear
    if [[ ${options[$SELECTION]} ]]; then
        if [[ "${choices[$SELECTION]}" == "" ]]; then
            unset choices[$SELECTION]
        else
            choices[$SELECTION]=""
        fi
            ERROR=" "
    else
        ERROR="非法参数: $SELECTION"
    fi
done


#根据选项进行部署
function ACTIONS {
  for k in ${!choices[*]}; do
    bmsg "${options[$k]} 开始部署!"
    bmsg "判断 ${options[$k]} 服务是否已经启动!"
    pid=`ps -ef|grep ${options[$k]}|grep -v grep|awk '{print $2}'`
    if [ "$pid" == "" ];then
      gmsg "${options[$k]}.jar 服务未启动!"
    else
      rmsg "${options[$k]}.jar 服务已启动, 开始关闭!"
      kill -9 $pid
      gmsg "${options[$k]}.jar 服务已关闭, 重新启动!"
    fi
    # 这里可以写具体服务的执行
    gmsg "部署${options[$k]}服务!"
    if [ $? -eq 0 ]; then
      gmsg "${options[$k]} 部署成功!"
    else
      rmsg "${options[$k]} 部署失败! 请稍后重试"
    fi
  done
}

# 调用Actions 功能
ACTIONS

执行效果如下:
在这里插入图片描述
按Enter 执行:ACTIONS 操作
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值