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

如何编写可接收cat管道输入的bash脚本获取子域名HTTP响应码

管道接收输入的脚本实现方案

当通过cat subdomains.txt | ./httpResponse调用脚本时,传入的子域名内容会进入脚本的标准输入流(stdin),不需要提前把内容赋值给固定列表变量,可直接通过循环逐行读取处理。

完整可运行的脚本实现

优先用while read循环逐行读取输入,避免for循环因拆分规则导致的内容识别错误(for循环默认按空白字符拆分内容,遇到空行、特殊字符很容易出问题)。
创建httpResponse脚本,内容如下:

#!/bin/bash
# 逐行读取stdin内容,兼容最后一行无换行符的场景
while IFS= read -r subdomain || [ -n "$subdomain" ]; do
    # 跳过空行,避免发起无效请求
    if [ -z "$subdomain" ]; then
        continue
    fi
    # 发送请求获取状态码,设置5秒超时避免脚本卡滞
    http_status=$(curl --write-out "%{http_code}" --silent --output /dev/null --max-time 5 "http://${subdomain}")
    echo "${subdomain}: ${http_status}"
done

写完脚本后给文件加执行权限:

chmod +x ./httpResponse

常见踩坑提醒

  • 原示例中curl命令前多余的echo需要删掉,否则只会把curl命令打印在屏幕上,不会真正发起请求
  • 不要用for subdomain in $(cat -)这类写法遍历输入流,这种写法会把换行、空格、制表符全部当成分隔符,极易出现内容拆分错误
  • 可根据实际需求把请求前缀从http://替换为https://

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 22:36:05