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

如何在Shell脚本中创建带1-5数字范围限制的菜单(禁用CASE语句)

嘿,这个需求完全可以实现!不用case语句的话,咱们靠while循环配合if-elif条件判断就能搞定强制输入范围的菜单,而且逻辑清晰易懂。我直接给你写个完整的示例脚本,再拆解关键部分:

无CASE语句的Shell菜单实现(强制1-5输入)

下面是完整的脚本代码,你可以直接拿去测试:

#!/bin/bash

# 无限循环,直到用户输入合法选项
while true; do
    # 打印菜单内容
    echo "请选择以下选项:"
    echo "1. 选项一"
    echo "2. 选项二"
    echo "3. 选项三"
    echo "4. 选项四"
    echo "5. 退出脚本"

    # 获取用户输入
    read -p "请输入1-5之间的数字:" user_input

    # 第一步:验证输入是否为纯数字
    if ! [[ $user_input =~ ^[0-9]+$ ]]; then
        echo "⚠️ 错误:请输入有效的数字!"
        echo "-------------------------"
        continue
    fi

    # 第二步:验证数字是否在1-5范围内
    if (( user_input < 1 || user_input > 5 )); then
        echo "⚠️ 错误:请输入1-5之间的数字!"
        echo "-------------------------"
        continue
    fi

    # 第三步:用if-elif处理各个选项逻辑
    if (( user_input == 1 )); then
        echo "你选择了选项一,执行对应操作..."
        # 这里写选项一的具体逻辑
    elif (( user_input == 2 )); then
        echo "你选择了选项二,执行对应操作..."
        # 这里写选项二的具体逻辑
    elif (( user_input == 3 )); then
        echo "你选择了选项三,执行对应操作..."
        # 这里写选项三的具体逻辑
    elif (( user_input == 4 )); then
        echo "你选择了选项四,执行对应操作..."
        # 这里写选项四的具体逻辑
    elif (( user_input == 5 )); then
        echo "脚本即将退出,再见!"
        exit 0  # 退出脚本
    fi

    # 如果需要执行完选项后回到菜单,就留空;如果要退出,就在对应选项加exit
    echo "-------------------------"
done

关键逻辑拆解

  1. 无限循环控制:用while true让菜单持续显示,直到用户选择退出选项(或者你可以在其他选项里加break来终止循环)。
  2. 输入合法性验证:
    • 先用正则表达式^[0-9]+$判断输入是否是纯数字,避免用户输入字母、符号等无效内容。
    • 再用(( ... ))的算术判断,检查数字是否在1-5区间内,不符合就提示错误并continue回到循环开头。
  3. 替代CASE的逻辑处理:用if-elif依次匹配每个选项,完全可以替代case的功能,而且逻辑直观。

小提示

  • 如果希望用户执行完某个选项后不退出,而是回到菜单,就保持当前的循环逻辑即可。
  • 如果需要给菜单加颜色或者更美观的格式,可以在echo里加ANSI转义码,比如echo -e "\033[32m请选择以下选项:\033[0m"(绿色字体)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:41:03