ifに2つ以上の条件を追加できますか?

ifに2つ以上の条件を追加できますか?

ifステートメントに2つ以上の条件を含めることはできますか?

if  [ "$name" != "$blank" && "$age" == "$blank" ]; then

可能ですか?そうでない場合はどうすればよいですか?

答え1

(POSIX標準)構文を使用すると、[ expression ]次のものを使用できます。

if [ "$name" != "$blank" ] && [ "$age" = "$blank" ]; then
   echo true
fi

ただし、[[ expression ]]構文では、次の2つの条件を使用できます。

if [[ $name != "$blank" && $age == "$blank" ]]; then
   echo true!
fi

[[overの2つの利点[

  1. and にはトークン化やグローバル拡張がないため、多くの引数を引用符で囲む必要はありません([[引用符がない場合はパターンとして解釈されるandの右側を除く)。==!=
  2. [[使いやすく、エラーが発生する可能性が低くなります。

欠点[[:ksh、bash、zshでのみサポートされ、通常のBourne / POSIX shではサポートされていません。

[[参照および[比較のための私のよいページバッシュFAQ

bash / POSIXシェルで変数を引用することを忘れてしまうセキュリティリスク

答え2

言及されていない別の可能性があります@SepahradSalour-a演算子を使用しています:

if [ "$name" != "$blank" -a "$age" = "$blank" ]; then

さて、すべての変数を正しく引用してください。それぞれ

関連情報