1

bash スクリプトで ping から成功応答と失敗応答の両方を取得しようとしていますが、これまでのところ取得できません。

私のコードは次のようになります...

ping_results=$(ping -c 4 -q google.com)

これはpingが成功した場合に機能しますが、インターネットに接続していない場合に結果が得られます

ping: unknown host google.com

コンソールに出力され、スクリプトが終了したように見えます。

ping の結果またはエラーの両方を ping_results 変数に格納したいと考えています。

どんな助けでも大歓迎です。

4

1 に答える 1

8

さて、あなたの質問に対する簡単な答えは、stderr を stdout にリダイレクトすることです。Fredik Phil がコメントで述べたように。

それ以外の:

ping_results=$(ping -c 4 -q google.com);

使用する:

 ping_results=$(ping -c 4 -q google.com 2>&1);

または似たようなもの...

ただし、実行内容によっては、ping コマンドの終了コードが 1 (ping がエラーで終了していることを示す) であるか、または 0 (ping が成功していることを示す) であるかをテストした方がよい場合があります。終了コードは変数「$?」に格納されます。

于 2013-03-16T23:19:25.467 に答える