パラメータが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 found
0で終了します。
答え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