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

Bash脚本:如何将select语句的选项输入键改为字母?

实现支持字母选择的Bash子菜单方案

Bash的select语句默认仅支持数字选择,要实现字母触发的子菜单,你可以手动打印菜单提示,结合read获取输入,再用case做分支判断——这种方式既能显示完整选项列表,又支持直接输入字母选择。以下是完整的示例脚本:

#!/bin/bash

# 子菜单函数
SubMenu() {
    clear
    while true; do
        # 打印自定义菜单
        echo "=== 子菜单 ==="
        echo "F) Fruits"
        echo "N) Nuts"
        echo "D) Dinner"
        echo "E) Exit"
        echo "--------------"
        read -p "请输入选择(F/N/D/E): " choice

        # 统一转为大写,兼容小写输入
        case "${choice^^}" in
            F)
                echo "你选择了Fruits"
                # 此处添加Fruits对应的业务逻辑
                read -p "按回车继续..."
                clear
                ;;
            N)
                echo "你选择了Nuts"
                # 此处添加Nuts对应的业务逻辑
                read -p "按回车继续..."
                clear
                ;;
            D)
                echo "你选择了Dinner"
                # 此处添加Dinner对应的业务逻辑
                read -p "按回车继续..."
                clear
                ;;
            E)
                echo "退出子菜单"
                clear
                break
                ;;
            *)
                echo "无效输入,请输入F/N/D/E"
                read -p "按回车继续..."
                clear
                ;;
        esac
    done
}

# 主菜单(保留你原有的select实现)
clear
PS3="请选择主菜单选项: "
options=("进入子菜单" "退出程序")
select opt in "${options[@]}"; do
    case $opt in
        "进入子菜单")
            SubMenu
            ;;
        "退出程序")
            echo "退出程序"
            exit 0
            ;;
        *)
            echo "无效选择,请输入对应数字"
            ;;
    esac
done

核心逻辑说明

  • 自定义菜单输出:手动编写带字母标识的选项列表,替代select自动生成的数字选项,让用户明确可输入的触发字符。
  • 输入兼容处理:通过${choice^^}将用户输入转为大写,支持小写f/n/d/e的模糊输入。
  • 分支匹配:用case语句直接匹配字母输入,执行对应操作,同时处理无效输入的提示逻辑。
  • 主菜单兼容:保留你原有的select主菜单实现,不破坏原有业务流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:03:17