Shell脚本curl在stderr上输出进度[重复]
Posted
技术标签:
【中文标题】Shell脚本curl在stderr上输出进度[重复]【英文标题】:Shell script curl outputs progress on stderr [duplicate] 【发布时间】:2021-08-05 09:59:51 【问题描述】:我已将脚本 stdout
和 stderr
重定向到不同的日志文件中,如下所示:
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基础02 标准文件描述符STDIN,STDOUT,STDERR和输入输出重定向