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

请求编写带重试的单行Bash脚本:循环调用API直至返回200

单行Bash脚本实现方案

下面是满足需求的单行脚本,每分钟尝试一次API调用,最多10分钟,直到返回200状态码:

for i in {1..10}; do if wget --spider --quiet https://somedomain.com/api/up; then echo "API调用成功(返回200)"; break; else echo "第$i次尝试失败,等待1分钟"; sleep 60; fi done

针对你的两个困惑点的说明

1. 如何判断wget返回200状态码

wget --spider是专门用来检查URL可用性的模式,它不会下载文件,只发送请求并检查响应状态:

  • 当目标URL返回200类成功状态码时,wget的退出码为0,if语句会判定为真,执行成功逻辑并跳出循环
  • 如果返回非200状态码(如4xx、5xx)或连接失败,wget退出码非0,if判定为假,进入等待重试逻辑

如果需要精准匹配200(而非所有2xx),可以用以下方式捕获HTTP状态码:

for i in {1..10}; do STATUS=$(wget --server-response --spider --quiet https://somedomain.com/api/up 2>&1 | awk '/HTTP\// {print $2}'); if [ "$STATUS" = "200" ]; then echo "API返回200,成功"; break; else echo "第$i次尝试失败,状态码$STATUS,等待1分钟"; sleep 60; fi done

2. 整合为单行语句的技巧

Bash允许用分号;分隔不同的命令/代码块,把循环、条件判断、sleep等逻辑按顺序用分号连接,就能写成单行脚本:

  • 循环体内部的if-else结构,用;分隔if条件、then后的命令、else后的命令、fi
  • 循环的do和done之间的代码块,同样用分号分隔各部分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:35:48