【问题标题】:Shell script curl outputs progress on stderr [duplicate]Shell脚本curl在stderr上输出进度[重复]
【发布时间】: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 是啊,我什至没想到进度会登录到“错误通道”!

标签: bash shell curl


【解决方案1】:

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

【讨论】:

  • 所以我应该使用curl -s -S 来抑制进度条并仍然收到错误消息?
  • @amirz98:不幸的是,只有 2 个标准输出句柄,stdout 和 stderr。也许他们也应该创建 stdwarn 和 stdinfo,但他们没有。
猜你喜欢
  • 1970-01-01
  • 2021-01-13
  • 2012-10-08
  • 2016-03-22
  • 1970-01-01
  • 2011-09-20
  • 2021-12-25
  • 2016-10-29
  • 1970-01-01
相关资源
最近更新 更多