带颜色菜单的Shell安装器需做到结构清晰、交互友好、视觉可读:用函数模块化各安装步骤,定义标准色变量控制输出层次,通过while+case实现循环选择与状态反馈,并加入预检、确认、日志和中断保护等生产级细节。

把多步安装流程做成带颜色菜单的 Shell 安装器,核心是三件事:结构清晰、交互友好、视觉可读。不是堆功能,而是让运维或用户一眼看清选项、选得安心、执行有反馈。
用函数模块化每一步安装逻辑
别把所有命令塞进一个 case 分支里。每个安装环节(比如装 Nginx、配 MySQL、启服务)单独写成函数,命名见名知意:
- install_nginx():含下载、解压、编译、配置、启动全流程
- config_mysql():初始化数据库、设 root 密码、建业务库
- start_services():检查端口、拉起进程、写 systemd 单元(如需)
这样既方便调试单步,也利于后期扩展二级菜单(比如“Nginx → 编译安装 / yum 安装 / 跳过”)。
主菜单用 color 变量 + echo -e 控制视觉层次
颜色不是装饰,是信息分层工具。定义标准色变量,避免硬编码 \033 序列:
- COLOR_TITLE='\033[1;36m'(青蓝加粗)—— 用于标题行
- COLOR_CHOICE='\033[1;33m'(亮黄)—— 用于可选编号项
- COLOR_WARN='\033[1;31m'(亮红)—— 用于错误/警告提示
- COLOR_OK='\033[1;32m'(亮绿)—— 用于成功反馈
- COLOR_RESET='\033[0m'—— 每次输出结尾必须重置,防“染色泄露”
菜单显示示例:
echo -e "${COLOR_TITLE}=== LNMP 一键部署安装器 v2.1 ===${COLOR_RESET}"echo -e "${COLOR_CHOICE}1) 安装 Nginx${COLOR_RESET}"
echo -e "${COLOR_CHOICE}2) 初始化 MySQL${COLOR_RESET}"
echo -e "${COLOR_CHOICE}0) 退出${COLOR_RESET}"
用 while + case 实现循环选择与状态反馈
主流程必须支持反复选择、返回上一级、中途退出。关键点:
- 用 while true 包裹整个菜单循环
- 用户输入后立即 read -r choice,并用 case $choice in 分发
- 每个分支执行前先 clear,执行后加 echo -e "${COLOR_OK}✓ 操作完成${COLOR_RESET}"
- 失败时用 echo -e "${COLOR_WARN}✗ 执行失败:${msg}${COLOR_RESET}" 并 continue 回主菜单
不建议用 exit 退出脚本——万一用户误按 0,应允许重新进入;真正退出只在明确选“退出”时触发 break。
加一点小细节提升真实可用性
生产级安装器不是“能跑就行”,要减少人为失误:
- 执行前确认:如 install_nginx() 开头加 read -p "即将安装 Nginx,继续?(y/N): " -n1 confirm,判断 confirm != "y" 则 return
- 环境预检:菜单启动前运行 check_prereq(),检测 wget/curl/gcc/make 是否存在,缺则提示并 exit 1
- 日志定向:关键步骤重定向输出到 /var/log/installer.log,同时用 tee 保持屏幕可见:make install 2>&1 | tee -a "$LOGFILE"
- 中断安全:开头加 trap 'echo -e "\n${COLOR_WARN}已中止安装${COLOR_RESET}"; exit 1' INT TERM
这些不增加复杂度,但大幅降低“装一半失败、系统残留混乱”的风险。

















