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

如何制作数字选择式Bash菜单?求简化实现方案

两种简洁的数字选项Bash菜单实现方案

没问题!我帮你整理了两种符合需求的数字选项菜单实现,一种是基于你原脚本的简化优化版,另一种是更轻量的手动实现,你可以根据场景选择:

方案一:简化版Select菜单(保留原生select优势)

原脚本已经用了select(它本来就会自动生成数字选项),我们可以优化得更简洁,避免重复写选项字符串,用数组索引来匹配逻辑:

#!/bin/bash
# 简化版数字选项菜单
options=("Choice 1" "Choice 2" "Choice 3" "Exit")

# 自定义提示语
PS3='请输入你的选择(数字):'

select opt in "${options[@]}"
do
    case $REPLY in
        1)
            echo "你选择了选项1:${options[0]}"
            # 这里写选项1的执行逻辑
            ;;
        2)
            echo "你选择了选项2:${options[1]}"
            # 这里写选项2的执行逻辑
            ;;
        3)
            echo "你选择了选项3:${options[2]}"
            # 这里写选项3的执行逻辑
            ;;
        4)
            echo "退出菜单..."
            break
            ;;
        *) echo "无效选项:$REPLY,请输入1-4之间的数字";;
    esac
done

优点:

  • 原生select会自动生成带数字的菜单列表,不用手动打印
  • 通过$REPLY直接匹配数字,逻辑更直观

方案二:纯Read+Case手动实现(完全自定义格式)

如果你想要完全控制菜单的显示样式,比如调整缩进、添加分隔线,可以用这种手动打印菜单+读取输入的方式:

#!/bin/bash
# 自定义数字选项菜单
while true; do
    # 打印菜单(可自由修改格式)
    echo "====================="
    echo "请选择操作:"
    echo "1) Choice 1"
    echo "2) Choice 2"
    echo "3) Choice 3"
    echo "4) Exit"
    echo "====================="
    read -p "输入数字选择:" choice

    # 匹配选项逻辑
    case $choice in
        1)
            echo "执行选项1的操作..."
            # 这里写选项1的代码
            ;;
        2)
            echo "执行选项2的操作..."
            # 这里写选项2的代码
            ;;
        3)
            echo "执行选项3的操作..."
            # 这里写选项3的代码
            ;;
        4)
            echo "退出程序..."
            exit 0
            ;;
        *) echo "⚠️  无效输入,请输入1-4的数字!";;
    esac
    # 可选:每次操作后换行分隔
    echo -e "\n"
done

优点:

  • 菜单样式完全自定义,想加什么格式都可以
  • 逻辑清晰,适合需要高度定制菜单的场景

两种方案都满足你要的“数字选项”需求,选哪种看你对菜单样式的灵活度要求啦~

内容的提问来源于stack exchange,提问作者yadoneknowbigsnack

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:34:01