Answers:
如果您找不到更好的答案,脚的骇客:
wget {url} 2>/tmp/err.log || cat /tmp/err.log; rm /tmp/err.log
(2> /tmp/err.log将stderr重定向到tmp文件;如果wget返回0 [成功],则||短路,否则将打印出错误日志值)
error_log=$(wget -nv example.net 2>&1) || echo $error_log
是更优雅的解决方案,但仍然笨拙。
由于当前所有wget输出都输出到stderr,看来要解决这种“优雅的方式”,您将必须修补wget源。
wget源设计规定了消息之间的详细程度级别差异,而不是错误和非错误消息之间的简单区分。
关于此http://savannah.gnu.org/bugs/?33839,存在一个开放的错误,并且还有一些较早的讨论。这是一个建议的修补程序http://www.mail-archive.com/wget%40sunsite.dk/msg03289.html,这是Hrvoje Niksic对此http://www.mail-archive.com/wget的解答%40sunsite.dk / msg03330.html。
除此之外,您当然会在对Foon不太优雅的解决方案的评论中提出好的解决方案。