回答:
curlを使用します。すべてのエラーがどのように見えるかを推測する必要はありません。
[wizard@laptop ~] curl -s -S http://www.google.coccm/ > /dev/null && echo "TRUE"
curl: (6) Couldn't resolve host 'www.google.coccm'
[wizard@laptop ~]$ curl -s -S http://www.google.com/ > /dev/null && echo "TRUE"
TRUE
-s /-サイレント
Silent mode. Don’t show progress meter or error messages. Makes Curl mute.
-S /-show-error
When used with -s it makes curl show error message if it fails.
また、何らかの理由でstdoutでstderrが必要な場合。
curl -s -S http://www.google.coccm/ 2>&1 1> /dev/null
そのためのオプションが表示されません。エラーが何であるか、またはそれが発生したかどうかを知る必要がありますか?エラーが発生したかどうかを知る必要がある場合は、終了ステータスを使用できます。
if ! wget -o /dev/null www.google.com/flasfsdfsdf; then
echo 'Oops!'
fi
または多分:
if ! wget -o logfile www.google.com/flasfsdfsdf; then
cat logfile
fi
そして、あなたが空想を得たいならば、あなたは猫をgrepコマンドに変えることができます...
標準出力を/dev/null
にリダイレクトしますが、選択したシェルでエラー出力を保持します。
bashでは、これは次のようになります。
wget [wget options] > /dev/null
編集:だから、wget
誤動作します。すべてのエラーに「エラー」という単語が含まれている場合は、パイプすることができますgrep
wget [wget options] 2>&1 | grep -i "error"
grep
出力エラーのみに使用する別のオプションを追加しました
stderr
助けなしにパイプを通過しません。
以来wget
出力上のすべてのメッセージはstderr
、あなたはそれがgrepするためにパイプすることができます前に、リダイレクトを使用する必要があります。
wget [options] 2>&1 | grep "^wget:"
これはwget
、エラー行が「wget:」で始まることを前提としています。
OUT=`wget --no-verbose -O /tmp/a http://example.com/ 2>&1` || echo $OUT
動作します。ただし、出力ファイルは常に切り捨てられますが、必要な場合とそうでない場合があります。
カールの方が優れています:
curl --fail --silent --show-error -o /tmp/a http://example.com
エラーが発生した場合、出力ファイルは変更されません。