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

Bash脚本无限循环失效求助:代码仅执行一次即停止

解决Bash脚本无限循环的问题

嘿,我瞅了下你的脚本,问题出在这几个地方:

  • 当你输入order时,break会直接跳出外层的while true循环,执行完姓名和电话的输入后脚本就结束了,自然没法循环
  • 输入无效选项时用exec bash "$0"是重启整个脚本,不是真正的循环,还会丢掉当前的进程上下文

给你改好了,这样就能实现无限循环,每次完成订单输入后会回到选择界面,无效输入也只会重新提示,不会重启脚本:

#!/bin/bash
while true
do
    read -p "make a choice (order/quit) " order
    case $order in
        order ) 
            # 执行订单信息输入
            read -p " your name : " name
            read -p "your telephone? " phone
            printf "======================================================\n"
            echo Hello $name:
            printf "======================================================\n"
            echo Your telephone is $phone
            # 输入完成后回到循环开头,等待下一次选择
            continue
            ;;
        quit ) 
            # 退出脚本
            exit 0
            ;;
        * ) 
            echo "is not a valid."
            # 回到循环开头重新提示选择
            continue
            ;;
    esac
done

关键修改点:

  • 把姓名电话的输入逻辑移到了order选项的分支里,这样执行完后通过continue回到循环开头,不会跳出整个while循环
  • 去掉了exec bash "$0",换成continue,无效输入后直接重新提示选择,更高效也更符合循环的逻辑
  • 给exit加上了0(正常退出状态码),规范脚本的退出行为

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:40:22