You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:00:46