条件にコマンドを含める必要がありますか、それとも戻りコードをテストする必要がありますか?

条件にコマンドを含める必要がありますか、それとも戻りコードをテストする必要がありますか?

これはベストプラクティスに関する簡単な質問です。どちらを使うべきですか?

オプション1

ping -c1 "$host"

if [[ $? -eq 0 ]] ; then
   command
else
   command
fi

オプション2

if ping -c1 "$host" ; then
   command
else
   command
fi

簡単な命令であることはわかりますが、大きくなると違いが途方もないことがあります。

ベストアンサー1

優先事項ですが、1つを追加する予定の場合は、2番目のフォームがより安全になりますset -e。このフォームはまだ期待どおりに機能しますが、最初のフォームでは失敗した場合、スクリプトはすぐに終了しますping(ゼロ以外の値で)。終了ステータスを返します)。

注: 演算子は-eq、ではありませんeq

おすすめ記事