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

Groovy调用curl时输出为何进入错误流而非标准输出且退出码为0?

原因说明

这个现象和Groovy本身没有关系,是curl官方的输出设计逻辑导致的:

  • curl默认会将进度信息、运行诊断类内容输出到标准错误流(stderr),只有用户主动要求输出的接口响应内容才会写入标准输出流(stdout)
  • 你的命令使用了-O参数,作用是把下载的资源直接写入本地同名文件,不会把文件内容输出到标准输出,所以stdout是空的
  • 你在错误流中看到的下载进度条属于curl的运行诊断内容,默认就是走stderr输出,和请求是否成功、退出码是否为0没有关联。

解决方案

如果不需要进度信息输出,可以给curl添加-s(静默模式)参数关闭进度和非必要提示,如果需要保留错误提示可以搭配-S参数使用:

// 示例:添加静默参数关闭进度输出
def command = ["curl", "-sLO", "https://curl.se/download/curl-7.79.1.tar.gz"]

如果需要把进度信息也重定向到标准输出,可以添加shell重定向规则,需要改为通过shell执行命令:

def command = ["bash", "-c", "curl -LO https://curl.se/download/curl-7.79.1.tar.gz 2>&1"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:48:03