スクリプトのホストコマンドが有効な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

コマンドが失敗したかどうかをテストするためにこれを使用します!(コマンドが通過した場合、出力を正常に印刷したいと仮定するためです)。 stderrの代わりにstdoutにエラーをhost送信すると、stdoutを隠すことはできません。not foundこれがホストコマンドをgrep -v 'not found'ここにパイプする理由であり、見つからないエラーがあり、まだ1で終了した場合はエラーを隠して、if設定がprintになるようにします-。見つからない場合は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

関連情報