PowerShell: if文の条件式でand・or・notを使う
PowerShellのif文の条件式の中で論理演算子を使う方法を解説します。 論理演算子の中でも良く使う「-and、-or、-not」 の使い方を順番に説明します。 PowerShellで論理演算子を使う場合の注意点として「-and」のように 「- ハイフン」記号をつけ忘れないようにしてください。
-and演算子の使い方
「-and」は論理積です。 「条件1 -and 条件2」とある場合、 条件1と条件2の両方がTrueの場合のみTrueとなり、 それ以外はFalseとなります。
次のコードのif文の条件式は、 「変数$aが10かつ変数$bが10」の場合Trueとなります。
if ($a -eq 10 -and $b -eq 10){ # 処理 }
PowerShellでは論理演算子も算術演算子も「-英文字」で表すため、 条件式の部分がわかりにくくなります。 見づらい場合は次のように()丸括弧をいれるとわかりやすくなります。
if (($a -eq 10) -and ($b -eq 10)){ # 処理 }
条件式を複数行で書く
もし条件式が長くなる場合は無理に1行で記述せずに、 複数行に渡って書くと見やすくなります。 条件式を複数行で書く場合、 行末に記号を入れる必要もなく普通に改行するだけです。
if (($a -eq 10) -and ($b -eq 10) -and ($c -eq 10)){ # 処理 }
-or演算子の使い方
「-or」は論理和です。 「条件1 -or 条件2」とある場合、 条件1と条件2のどちらかがTrueであればTrueとなり、 両方ともFalseであればFalseとなります。
次のコードのif文の条件式は、 「変数$aが10、変数$bが10」のどちらかが成立すれば Trueとなります。
if (($a -eq 10) -or ($b -eq 10)){ # 処理 }
次のように3つ以上の条件式を -or でつなぐこともできます。
if (($a -eq 10) -or ($b -eq 10) -or ($c -eq 10)){ # 処理 }
-not演算子の使い方
「-not」は論理否定です。 「-not」の代わりに「-!」と記述することもできます。 真・偽が反転するので 「-not 条件」場合、条件がTrueであればFalseとなり、 条件がFalseであればTrueとなります。
次のコードは 変数$flgがTrueの場合、ステートメントブロック内の処理を実行します。
if ($flg){ # 処理 }
上のif文の条件式を、 -not演算子を使って反転すると、 変数$flgがFalseの場合処理を実行するようになります。
if (-not $flg){ # $flgがFalseの場合に実行される # 処理 }
-not演算子を使う場合の注意点として、 次のように「-not (条件)」と記述するとエラーになります。
# 条件式の書き方がエラーとなる if -not ($flg){ # 処理 } # 実行結果(エラーメッセージ) Missing '(' after 'if' in if statement.
下のように「-not」も()内に含まれるように記述してください。
if (-not ($flg)){ # 処理 }
(まとめ記事: PowerShell if文)