スクリプト内のホストコマンドが有効な IP を取得したかどうかを確認するにはどうすればよいですか

スクリプト内のホストコマンドが有効な IP を取得したかどうかを確認するにはどうすればよいですか

パラメータが1つしかないと仮定します

host $1

上記のコマンドで回答が得られるか確認するにはどうすればいいですか?

Host $1 not found (NXDOMAIN) 

そして、見つからないエラーを表示する代わりに、-

答え1

host入力を解決できない場合は 1 で終了するので、if 構文を使用できます。

if ! host "$1" | grep -v 'not found'; then
  printf '%s\n' '-'
fi

!コマンドが失敗したかどうかをテストするために を 使用しています(成功した場合は通常どおり出力を印刷するだけであると想定しているため)。 はhostエラーnot foundを stderr ではなく stdout に送信するため、stdout を非表示にすることはできません。 このため、ホスト コマンドをgrep -v 'not found'これにパイプして、見つからないエラーが存在する場合はそれを非表示にして 1 で終了し、if 構造が を印刷するようにしています-。見つからない場合はnot found0 で終了します。

答え2

終了ステータスだけで十分でしょうか?$?出力を非表示にした場合でも、最後のコマンドの終了ステータスを組み込むことができます。host終了ステータスは、0 は成功、1 はエラーです。

[17:54] [ws ~] $ host 127.0.0.112 1>&2 >/dev/null
[17:54] [ws ~] $ echo $?
1
[17:54] [ws ~] $ host 127.0.0.1 1>&2 >/dev/null
[17:54] [ws ~] $ echo $?
0

関連情報