PowerShell

文字列・数値の比較

比較演算子 -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文の条件式では決して「=」を使わないように注意が必要となる。

プロフィール

興味のあること、つまづいたこと、考えたことなどを書いています。

カテゴリー

コメント

タイトルとURLをコピーしました