linux基础(10)-导航菜单
阅读原文时间:2022年04月26日阅读:1

导航菜单实战

例:编写一个shell脚本,包含多个菜单,其中需要一个退出选项;可单选也可多选;根据序号选择后,显示所选菜单名称。

#!/bin/bash
#############################
#文件名称:install_hadoop_menu.sh
#作者姓名:wujiadong
#创建日期:--
#############################

#主菜单 显示
while true
do
clear
echo -e "\n\n \t\t \033[40;32m ====飞谷安装hadoop主界面=====\033[1m \t\t"
echo -e "\n"
echo -e "\t"\)安装hadoop
echo -e "\t"\)安装hbase
echo -e "\t"\)安装zookeeper
echo -e "\t"\)安装hive
echo -e "\t"\)安装pig
echo -e "\t"\)安装spark
echo -e "\t"\)选择组件安装
echo -e "\t"\)一键安装所有
echo -e "\t"\)退出
echo -e "\n"
echo -e "请选择"
read choice #将输入的序号存入choice这个变量

case $choice in  
    )  
        break;;  
    )  
                    echo "正在安装hadoop..."  
                    sleep  
                    echo "hadoop安装成功,请按回车,选择其他内容"  
                    read menu  
                    continue;;  
    )

                    echo "正在安装habase..."  
                    sleep  
                    continue;;  
    )  
                    echo "正在安装hbase..."  
                    sleep  
                    continue;;  
    )  
                    echo "正在安装zookeeper..."  
                    sleep  
                    continue;;  
    )  
                     echo "正在安装pig..."  
                    sleep  
                    continue;;  
    )  
                    echo "正在安装spark..."  
                    sleep  
                    continue;;  
    )  
                    echo "进入选择安装hadoop组件界面"  
                    sh select.sh  
                    continue;;  
    )  
                    echo "正在安装以上所有组件"  
                    sleep  
                    continue  
esac

done

#!/bin/bash
###############################
#文件名称:select.sh
#作者姓名:邬家栋
#创建日期:--
###############################
#主菜单 显示
clear

while true
do
clear
echo -e "\n\n \t\t \033[40;32m =====请选择需要安装的组件=====\033[1m \t\t"
echo -e "\n"
echo -e "\t" \)安装hadoop
echo -e "\t" \)安装hbase
echo -e "\t" \)安装zookeeper
echo -e "\t" \)安装hive
echo -e "\t" \)安装pig
echo -e "\t" \)安装spark
echo -e "\t" \)返回
echo -e "\n"
echo "请选择需要安装组件的代码,多选以逗号分隔:"
read choice #将屏幕输出的内容保存到choice变量里面

###一个case语句
case $choice in
) break;;
esac
V_INPUT=`echo $choice|sed 's/,/\n/g'` #|管道是将前面命令的输出作为后面命令的输入。sed 语句将逗号变成换行符,变成了多行文件。
for i in $V_INPUT #for循环读取该文件
do
j=`grep $i select_sub.lst`
var1=`echo $j | awk -F,'{print $2}'`
echo "正在安装${var}…"
sleep

if \[ $? -eq  \]; then  
    echo "安装${var1}成功"|tee a install.log  
else  
    echo"安装${var1}失败"|tee a install.log  
fi

done

done

#!/bin/bash
##########################
#文件名称:select_sub.lst
#作者姓名:邬家栋
#创建日期:--
#########################

,安装hadoop
,安装hbase
,安装zookeeper
,安装hive
,安装pig
,安装spark

执行sh install_hadoop_mainmenu.sh

选1之后

选7之后

注释:

反引号:在执行一条命令时,会先将其中的``语句当做命令执行一遍,再将结果加入到原命令中重新执行。和${}是一样的

 sed的替换:'s/旧字符/新字符/g'