ifステートメントのコマンドの置き換え

ifステートメントのコマンドの置き換え

コマンド置換の結果を次の文字列と比較しようとしています。

if [$(ping $1)=="ping: unknown host localhosts"]
then
  echo "no";
else
  echo "yes";
fi

私がここで何を間違っているのか?

答え1

まず、空白と引用符を忘れました。以下はエラーなので、stderrをキャプチャする必要があります。localhostsおそらく最終的に$1

if [ "$(ping -c1 "$1" 2>&1)" = "ping: unknown host $1" ]

このpingメッセージは地域によって異なる場合があります。ホストの名前解決のみをテストする場合は、pingこのツールは適切なツールではありません。この試み:

if getent hosts "$1" > /dev/null; then ...

関連情報