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

如何让Bash函数在CASE语句选择YES后继续执行后续逻辑?

解决Bash函数中选择YES后继续执行后续逻辑的问题

我来帮你搞定这个Bash函数的问题!你的代码里主要有两个核心问题:一是没有读取用户输入到$opt变量,导致case判断根本拿不到用户的选择;二是y分支的逻辑是空的,不知道怎么让流程继续往下走。下面是修正后的完整方案:

修正后的完整代码

function doit {
    # 用read -p直接输出提示并读取用户输入到opt变量
    read -p "Do you want to continue? {y/n} " opt
    case $opt in
        y) 
            echo "正在进入架构选择环节..."
            # 这里不需要额外操作,case执行完毕后会自动继续后续代码
            ;;
        n) 
            exit 
            ;;
        *)
            # 处理无效输入,提示后重新调用函数
            echo "输入无效!请输入y或n。"
            doit
            ;;
    esac

    # 读取架构选择的输入,用单独变量避免混淆
    read -p "32b or 64b? {32/64} " arch_opt
    case $arch_opt in
        32) do32 ;;
        64) do64 ;;
        *)
            echo "输入无效!请输入32或64。"
            # 再次询问,仍无效则退出
            read -p "32b or 64b? {32/64} " arch_opt
            case $arch_opt in
                32) do32 ;;
                64) do64 ;;
                *) echo "多次输入无效,程序退出。"; exit ;;
            esac
            ;;
    esac
}

关键改动说明

  • 读取用户输入:原代码只输出了提示,但没把用户的输入存到$opt里,所以case判断完全无效。这里用read -p命令,既能直接输出提示文本,又能把用户输入存入变量。
  • y分支逻辑:当用户输入y时,只需要让case分支执行完毕,函数就会自动继续执行后面的32/64位选择代码,不需要额外的跳转命令。如果需要提示用户,可以加一句echo说明。
  • 无效输入处理:增加了对非y/n、非32/64输入的处理,让函数更健壮,避免因为用户误输入导致流程中断。
  • 变量分离:架构选择用了arch_opt变量,和之前的opt分开,避免变量复用可能带来的逻辑混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:22:24