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 操作