回答:
より良い答えが得られない場合は、ラメハック:
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
よりエレガントなソリューションですが、まだ不器用です。
curl
代わりに試してください:
curl -fsS $url -o $file
ロングバージョン:
curl --fail --silent --show-error $url --output $file
GNOMEユーザーはGvfsを試すことができます。
gvfs-cp $url $file
--fail
ですか?HTTPエラーをstderrに行きたいものとして扱うのは意味がないのではないでしょうか。
--fail
と--show-error
しません。
現在、すべてのwget出力はstderrに送られるため、この「エレガントな方法」を解決するには、wgetソースにパッチを適用する必要があるようです。
wgetソースの設計は、エラーメッセージとエラーメッセージではない単純な分割ではなく、メッセージ間の詳細レベルの違いを指示します。
このhttp://savannah.gnu.org/bugs/?33839に関する未解決のバグがあり、古い議論もいくつかあります。ここに推奨パッチhttp://www.mail-archive.com/wget%40sunsite.dk/msg03289.htmlがあり、ここにこのhttp://www.mail-archive.com/wgetに関するHrvoje Niksicからの回答があります。 %40sunsite.dk / msg03330.html。
それ以外にも、もちろん、Foonのあまりエレガントでないソリューションへのコメントで提案した優れたソリューションがあります。