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

如何逐行读取curl流输出并按匹配的不同关键词执行对应操作

你设想的while循环逐行处理curl输出的方案完全可行,仅需要启动1次curl进程即可完成所有关键词匹配和对应逻辑触发,避免了多进程重复请求接口的资源浪费。

完整可运行脚本示例

#!/bin/bash
# 禁用curl输出缓冲,保证日志实时流入后续处理逻辑
curl --no-buffer "https://theurl.events/logs" 2>&1 | while IFS= read -r line
do
  # 按优先级匹配关键词,匹配到后执行对应脚本
  if [[ "$line" == *"Error"* ]]; then
    # 可将当前行内容作为参数传给脚本,在脚本内通过$1读取
    ./runbash1.sh "$line"
  elif [[ "$line" == *"WrongOperation"* ]]; then
    ./runbash2.sh "$line"
  elif [[ "$line" == *"WrongButton"* ]]; then
    ./runbash3.sh "$line"
  fi
done

注意事项

  • 必须给curl加--no-buffer(部分curl版本对应参数为-N)参数,默认curl会累积一定量输出后才会向下游管道传递,会导致日志处理延迟
  • 如果要避免误匹配日志data字段里的关键词,可以把匹配规则写得更精准,比如匹配action行的话改为[[ "$line" == "action=Error,"* ]],只会匹配行首为action=Error,的日志行,不会匹配到data里包含对应关键词的内容
  • 如果后续需要新增匹配规则,仅需在循环内新增elif分支即可,维护成本极低
  • 若需要对日志内的字段做更复杂的提取判断,可在判断分支内对$line做文本切割、正则匹配等操作
  • 脚本编写完成后执行chmod +x log_monitor.sh即可运行,需要后台常驻的话可搭配nohup、systemd等方式托管

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:36:04