Bash脚本循环检查URL重定向无输出,如何实现预期结果?
批量检查URL重定向的脚本修正方案
核心问题分析:你的脚本中,
domains数组里的元素已经是带http://前缀的完整URL,但循环执行curl时又额外拼接了http://,导致实际请求的URL变成http://http://my-url1.com这种错误格式,自然无法返回正确的重定向结果。修正后的基础脚本:去掉循环中多余的
http://,同时保留你原本的curl逻辑,还可以增加URL标识让结果更清晰:
#!/bin/bash declare -a domains=("http://my-url1.com" "http://my-url2.com" "http://my-url3.com") for i in "${domains[@]}" do echo "检查目标URL: $i" curl -v -L "$i" 2>&1 | grep -i "^< location:" | head -n 1 echo "------------------------" done
- 更高效的优化方案:使用
curl -I参数仅获取HTTP响应头(无需下载页面内容),配合-L跟随重定向,再用-s屏蔽无关进度输出,能大幅提升检查效率:
#!/bin/bash declare -a domains=("http://my-url1.com" "http://my-url2.com" "http://my-url3.com") for url in "${domains[@]}" do echo "当前检查URL: $url" curl -s -I -L "$url" | grep -i "^location:" | head -n 1 echo "------------------------" done
内容的提问来源于stack exchange,提问作者Somethingwhatever
相关产品推荐
相关产品推荐

