比較演算子 -eq を使用
PowerShellでは、変数の内容をもう一方の値が等しいか確認(比較)する場合、その対象が文字列であっても数値であっても、比較演算子-eqを使用する。
以下に例を示す。
[string]$str = 'January'
$str -eq 'January'
# True
[int]$int = 2024
$int -eq 2024
# True
このように、string型でもint型でも、-eqを使用して比較できる。
補足:if文の条件式における注意点
特に複数言語を使用している場合は、PowerShellでif文を書くときに条件式の書き方に注意する必要がある。
正しい例
まずは、正しいif文の例を示す。
正しい例:
$a=1
# 正しいif文の例
if ($a -eq 1) {
'$aは1です'
結果:$aは1です
}
$a
結果:1
これは問題なく動作する。
条件式を誤って記載した例
条件式を誤って記載すると、思わぬ動作を引き起こすおそれがある。例を示す。
誤った例:
$a = 1
# 誤ったif文の例
if ($a = 2) {
'$aは2です'
出力:$aは2です
}
$a
出力:2 ←意図しない代入が実行されてしまった
条件式で「変数$aが2である」ことを表したい場合は「$a -eq 2」と書かないといけないが、この例では、-eq の変わりに「=」を使用してしまっている。
特に注意しなければいけないのは、=を使った場合は条件式の中身が実行され、$aの値が2に変わってしまうことだ。
これは次の2つの点で、思わぬ動作を引き起こすおそれがある。
- 条件式の中身が(思い込みで)正しいと思っているのに、実行されない
- 変数の値が書き換わってしまい、余計に混乱する
おわりに
等しいことを確認する比較は、PowerShellでは文字も数値も-eqを使用する。
また、if文の条件式では決して「=」を使わないように注意が必要となる。
コメント