Bashはif条件を否定するために使用されることを知っていますが、私は!
次の形式を使用するコードを見ました。
if ! [[ CONDITION ]]; then
SOMETHING
fi
この形式と以下の形式の間に違いはありますか?
if [[ ! CONDITION ]]; then
SOMETHING
fi
Googleに試しましたが、以前の構文についてはまだ何も見つかりませんでした。
ベストアンサー1
単一条件の場合、両方とも同じです。
$ if [[ ! 1 = 1 ]]; then echo true; else echo false; fi
false
$ if ! [[ 1 = 1 ]]; then echo true; else echo false; fi
false
複数の条件をテストするときに違いがあります。
$ if [[ ! 1 = 2 || 2 = 2 ]]; then echo true; else echo false; fi
true
$ if ! [[ 1 = 2 || 2 = 2 ]]; then echo true; else echo false; fi
false
したがって、外部否定は結果に優先順位があります。
もちろん、条件全体に内部否定を適用することができるので、この場合の代わりに外部否定を使用することをお勧めします。
$ if [[ ! ( 1 = 2 || 2 = 2 ) ]]; then echo true; else echo false; fi
false