Shell脚本curl在stderr上输出进度[重复]

Posted

技术标签:

【中文标题】Shell脚本curl在stderr上输出进度[重复]【英文标题】:Shell script curl outputs progress on stderr [duplicate] 【发布时间】:2021-08-05 09:59:51 【问题描述】:

我已将脚本 stdoutstderr 重定向到不同的日志文件中,如下所示:

bash run.sh > out.log 2>err.log &

我的脚本中有一些curl 请求将进度状态输出到stderr,如下所示:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   210  100   210    0     0    294      0 --:--:-- --:--:-- --:--:--   294

这会使日志文件充满无用的数据。我怎样才能禁用它,以便我可以假设 stderr 只会有错误。

【问题讨论】:

对于任何工具作者,请将此问题作为另一个数据点来支持(经常被忽略的)长期最佳实践:悄悄地成功,大声地失败。默认情况下,此进度横幅是打开的,而不是仅由--verbose 或类似的激活,这是一种暴行。 @WilliamPursell 是啊,我什至没想到进度会登录到“错误通道”! 【参考方案1】:

使用curl -s(或--silent)抑制进度条。添加-S(或--show-error)仍然可以将错误消息打印到stderr。

【讨论】:

所以我应该使用curl -s -S 来抑制进度条并仍然收到错误消息? @amirz98:不幸的是,只有 2 个标准输出句柄,stdout 和 stderr。也许他们也应该创建 stdwarn 和 stdinfo,但他们没有。

以上是关于Shell脚本curl在stderr上输出进度[重复]的主要内容,如果未能解决你的问题,请参考以下文章

shell从入门到精通(13)输出重定向

shell从入门到精通(13)输出重定向

shell基础02 标准文件描述符STDIN,STDOUT,STDERR和输入输出重定向

如何将ffmpeg的-progress选项输出重定向到stderr?

web自动化的利器 -- cURL

linux shell数据重定向