PowerShell switch文 条件分岐を行うサンプル

説明 switch文とは
サンプル switch文のサンプル
  switch文のサンプル(数値の場合)
  switch文で比較式を使用する
  大文字と小文字を区別する(-CaseSensitive)
  大文字と小文字を区別しない(-Exact)
  任意の文字列で比較する(-Wildcard)
  正規表現で比較する(-Regex)

switch文とは

switch(変数){
  条件 or 値{
    処理
    break}
   ・・・
  default{
   処理}
}
  • 式の結果と値が一致すれば、配下の処理が実行されます。
  • breakでswitch文を抜けます。breakがないと下の判定が続けて実行されます。
  • defaultは、条件の値がどのcaseの値にも一致しない時に実行されます。省略可能ですが書いたほうが良いです。

 

switch文のサンプル

$color = "yellow"

switch($color)
{
    "red" {Write-Output ("red"); break}
    "yellow" {Write-Output ("yellow"); break} # yellow
    "blue" {Write-Output ("blue"); break}
    default {Write-Output ("other");}
}

1行目は、変数に値をセットしています。
3行目からswitch文が始まります。
6行目は、変数の値と一致するのでその配下の処理が実行されます。
breakでswitch文を抜けます。

 

switch文のサンプル(数値の場合)

$num = 2

switch($num)
{
    1 {Write-Output ("one"); break}
    2 {Write-Output ("two"); break} # two
    3 {Write-Output ("three"); break}
    default {Write-Output ("other"); }
}

数値の場合も文字列のときと同じです。

 

switch文で比較式を使用する

$num = 5

switch ($num) {
	({$_ -le 3})
	{Write-Output "3以下"; break}

	({$_ -in (4, 5, 6)})
	{Write-Output "4から6"; break} # 4から6

	({$_ -ge 7})
	{Write-Output "7以上"; break}
	
	default {Write-Output "other"}
}

-leは、less than or equal(<=)です。
-geは、greater than or equal(>=)です。

 

大文字と小文字を区別する(-CaseSensitive)

$color = "RED"

switch -CaseSensitive ($color)
{
    "red" {Write-Output ("red"); break}
    "Red" {Write-Output ("Red"); break}
    "RED" {Write-Output ("RED"); break} # RED
    default {Write-Output ("other");}
}

CaseSensitiveは、大文字小文字を区別します。

 

大文字と小文字を区別しない(-Exact)

$color = "RED"

switch -Exact ($color)
{
    "red" {Write-Output ("red"); break} # red
    "Red" {Write-Output ("Red"); break}
    "RED" {Write-Output ("RED"); break}
    default {Write-Output ("other");}
}

Exactは、大文字小文字を区別しません。

 

任意の文字列で比較する(-Wildcard)

$color = "yellow"

switch -Wildcard ($color)
{
    "red" {Write-Output ("red"); break}
    "y*w" {Write-Output ("yellow"); break} # yellow
    "blue" {Write-Output ("blue"); break}
    default {Write-Output ("other");}
}

Wildcardを使用するとアスタリスク(*)が任意の文字列になります。

 

正規表現で比較する(-Regex)

$color = "e-red"

switch -Regex ($color)
{
    "[abc]-red" {Write-Output ("1"); break}
    "[def]-red" {Write-Output ("2"); break} # 2
    "[ghi]-red" {Write-Output ("3"); break}
    default {Write-Output ("other");}
}

[abc]は、かっこ内のどれか1文字にマッチするかという意味です。

関連の記事

PowerShell if文のサンプル
PowerShell for文 処理を繰り返すサンプル

△上に戻る