MacOS X下Bash脚本如何创建表格/分栏式选项菜单?
用Bash脚本创建分栏/表格式选项菜单
我来帮你把这个菜单改成更清爽的分栏或表格形式!原来的select命令虽然好用,但样式比较固定,我们可以手动排版出美观的交互菜单,同时完全保留你原来的版本映射逻辑。
方案1:完整表格样式菜单
这个方案会绘制带边框的表格,把显示版本和实际映射版本直观展示给用户,对齐效果更规整:
#!/bin/bash # 保留你原来的颜色配置 starting="\n\e[1;34m==> \e[0m" cyan="\e[1;36m" green="\e[1;32m" red="\e[1;31m" ending="\e[0m" # 打印表格标题与表头 echo -e "${starting}${cyan}Select your Game Version${ending}" echo "--------------------------------------------------------" printf "| %-5s | %-15s | %-15s |\n" "序号" "显示版本" "实际映射版本" echo "--------------------------------------------------------" # 打印选项行,用printf保证列对齐 printf "| %-5s | %-15s | %-15s |\n" "1" "3.5" "7.6" printf "| %-5s | %-15s | %-15s |\n" "2" "6.5" "8.7" printf "| %-5s | %-15s | %-15s |\n" "3" "10.8" "9.2" printf "| %-5s | %-15s | %-15s |\n" "4" "Quit" "退出脚本" echo "--------------------------------------------------------" # 读取用户输入的序号 read -p "请输入选项序号: " opt # 处理输入逻辑,和你原来的逻辑一致 case $opt in 1) gameVersion='7.6' ;; 2) gameVersion='8.7' ;; 3) gameVersion='9.2' ;; 4) echo -e "${starting}已退出脚本${ending}" exit 0 ;; *) echo -e "${starting}${red}无效选项,请重新运行脚本${ending}" exit 1 ;; esac # 输出最终选择结果 echo -e "${starting}Your game Version is ${green}${gameVersion}${ending}!"
方案2:简洁分栏样式菜单
如果觉得表格边框太厚重,也可以用分栏排版,适合选项较少的场景:
#!/bin/bash # 颜色变量 starting="\n\e[1;34m==> \e[0m" cyan="\e[1;36m" green="\e[1;32m" red="\e[1;31m" ending="\e[0m" echo -e "${starting}${cyan}Select your Game Version${ending}" echo "------------------------" # 分两栏排版选项,用%-20s保证每栏宽度一致 printf "%-20s %-20s\n" "1) 3.5 → 7.6" "2) 6.5 → 8.7" printf "%-20s %-20s\n" "3) 10.8 → 9.2" "4) Quit" echo "------------------------" read -p "请输入选项序号: " opt case $opt in 1) gameVersion='7.6' ;; 2) gameVersion='8.7' ;; 3) gameVersion='9.2' ;; 4) echo -e "${starting}已退出${ending}"; exit 0 ;; *) echo -e "${starting}${red}无效选项${ending}"; exit 1 ;; esac echo -e "${starting}Your game Version is ${green}${gameVersion}${ending}!"
关键细节说明
- 用
printf的格式化字符串(比如%-5s)实现左对齐和固定宽度,确保菜单排版整齐 - 把版本映射关系直接展示在菜单里,用户无需猜测对应关系
- 用
read -p替代默认的select命令,完全自定义交互样式 - 保留了你原来的颜色配置和核心业务逻辑,只是优化了菜单展示形式
内容的提问来源于stack exchange,提问作者Aristeidis Karavas
相关产品推荐
相关产品推荐

