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

检查指定URL响应码的Bash脚本遍历完成后无法自动停止如何解决

卡顿原因
  • 你写的循环逻辑存在错误:for link in cat $1 $2 这行把第二个参数(你传入的期望HTTP状态码)也加入了待请求的URL列表,所有文件内的URL处理完成后,curl会去请求状态码这个无效字符串(比如你传了200就会请求200这个不存在的地址),导致长期挂起。
  • 没有给curl设置超时规则,遇到无法连接的URL会无限等待。
  • 用for遍历cat输出的写法兼容性差,遇到带特殊字符、空格的URL会拆分错误,也可能引发异常。
修复后的完整脚本
#!/bin/bash
# 先校验参数合法性
if [ $# -ne 2 ]; then
    echo "用法:$0 <URL列表文件路径> <期望匹配的HTTP状态码>"
    echo "示例:$0 urls.csv 200"
    exit 1
fi

url_file="$1"
target_code="$2"

# 逐行读取URL文件,兼容带特殊字符的URL、最后一行无换行的场景
while IFS= read -r link || [ -n "$link" ]; do
    # 跳过空行
    [ -z "$link" ] && continue
    # curl增加连接超时和总请求超时,避免挂起
    resp_code=$(curl --output /dev/null --silent --connect-timeout 3 --max-time 8 --write-out '%{http_code}' "$link")
    if [ "$resp_code" = "$target_code" ]; then
        echo "$link"
    fi
done < "$url_file"
关键修改说明
  • 删除了循环列表里的$2参数,不会再把状态码当成URL请求
  • 给curl增加了3秒连接超时、8秒总请求超时,极端情况也不会长期卡顿
  • 用while read逐行读取文件替代原for循环写法,兼容性更强,不会因为URL的特殊字符出现拆分错误
  • 增加了参数校验,避免漏传参数时的异常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:27:03