一、脚本功能概览

1.1 入口逻辑

if [ -f /etc/os-release ]; then
    . /etc/os-release
    echo "检测到操作系统:$NAME"
else
    echo "无法检测操作系统类型!"
fi

1.2 菜单结构

while true; do
    echo "1. 安装 Nginx"
    echo "2. 安装 Tomcat"
    echo "3. 退出"
    read -p "请选择操作 [1-3]:" choice
    case "$choice" in
        1) ... ;;
        2) ... ;;
        3) exit 0 ;;
    esac
done

二、双层菜单的实现方式

2.1 Nginx 与 Tomcat 分支

case "$nginx_mode" in
    1)
        echo "正在进行 Nginx 在线安装..."
        ;;
    2)
        echo "正在进行 Nginx 离线安装..."
        ;;
    *)
        echo "无效选择,请重新选择!"
        ;;
esac

2.2 为什么适合做模板

  • 主循环清晰,易于插入新菜单项。
  • case 分支直观,方便扩展子模块。
  • 可以继续接入真实安装函数,而不是只输出提示信息。

三、完整脚本

以下为本文对应的完整脚本,便于直接复制复用。

3.1 菜单模板.sh

#!/bin/bash
# menu.sh - 菜单管理示例脚本

# 检测操作系统类型(仅用于显示,可扩展后续逻辑)
if [ -f /etc/os-release ]; then
    . /etc/os-release
    DISTRO=$ID
    echo "检测到操作系统:$NAME"
else
    echo "无法检测操作系统类型!"
fi

echo ""

while true; do
    echo "============= 应用安装菜单 ============="
    echo "1. 安装 Nginx"
    echo "2. 安装 Tomcat"
    echo "3. 退出"
    read -p "请选择操作 [1-3]:" choice

    case "$choice" in
        1)
            echo "------ Nginx 安装方式 ------"
            echo "1. 在线安装"
            echo "2. 离线安装"
            read -p "请选择安装方式 [1-2]:" nginx_mode
            case "$nginx_mode" in
                1)
                    echo "正在进行 Nginx 在线安装..."
                    # 模拟安装过程
                    echo "Nginx 在线安装完成!"
                    ;;
                2)
                    echo "正在进行 Nginx 离线安装..."
                    # 模拟安装过程
                    echo "Nginx 离线安装完成!"
                    ;;
                *)
                    echo "无效选择,请重新选择!"
                    ;;
            esac
            ;;
        2)
            echo "------ Tomcat 安装方式 ------"
            echo "1. 在线安装"
            echo "2. 离线安装"
            read -p "请选择安装方式 [1-2]:" tomcat_mode
            case "$tomcat_mode" in
                1)
                    echo "正在进行 Tomcat 在线安装..."
                    # 模拟安装过程
                    echo "Tomcat 在线安装完成!"
                    ;;
                2)
                    echo "正在进行 Tomcat 离线安装..."
                    # 模拟安装过程
                    echo "Tomcat 离线安装完成!"
                    ;;
                *)
                    echo "无效选择,请重新选择!"
                    ;;
            esac
            ;;
        3)
            echo "退出脚本,再见!"
            exit 0
            ;;
        *)
            echo "无效选项,请重新输入!"
            ;;
    esac

    echo ""
    read -p "按回车键返回主菜单..." dummy
    echo ""
done