この記事は以前 http://blog.hiros-dot.net/ に書いたものです。
PowerShellにおけるswitchは、ほかの言語のswitchと比較すると多くの機能を持ち備えています。
何回かに分けて説明したいと思います。
まず、基本構文ですが
switch -options (評価する式)
{
<パターン> {実行するコマンドブロック}
<パターン> {実行するコマンドブロック}
:
default {実行するコマンドブロック}
}
となります。
caseというキーワードがないことに気づきましたか? VB, C, C#などの言語を使用している方にはちょっと違和感があるかもしれません。
では、早速ですが、この基本構文を使用した例を見てみましょう。
PS > switch ( $a ) { >> 1 { Write-Host "`$a は 1 です" } >> 2 { Write-Host "`$a は 2 です" } >> 3 { Write-Host "`$a は 3 です" } >> 4 { Write-Host "`$a は 4 です" } >> 5 { Write-Host "`$a は 5 です" } >> } >> $a は 3 です
上記は変数$aを評価し、該当するコマンドブロックの実行を行います。
次に一致するパターンが複数あったらどうなるかをみてみます。
PS > switch ( $a ) { >> 1 { Write-Host "`$a は 1 です" } >> 2 { Write-Host "`$a は 2 です" } >> 3 { Write-Host "`$a は 3 です" } >> 3 { Write-Host "`$a は three です" } >> 4 { Write-Host "`$a は 4 です" } >> 5 { Write-Host "`$a は 5 です" } >> } >> $a は 3 です $a は three です
上記のように該当するパターンすべてのコマンドブロックを実行します。
次にbreakを使用する例を見てみましょう。
先ほどの例のパターンの値が"3"(2つあるうちの最初のほう)にbreakを仕掛けます。
PS > switch ( $a ) { >> 1 { Write-Host "`$a は 1 です" } >> 2 { Write-Host "`$a は 2 です" } >> 3 { Write-Host "`$a は 3 です"; break } >> 3 { Write-Host "`$a は three です" } >> 4 { Write-Host "`$a は 4 です" } >> 5 { Write-Host "`$a は 5 です" } >> } >> $a は 3 です
breakが実行されると、コードはそこで中断されてswitchを抜けるため、2つめのパターン"3"のコマンドブロックが実行されていないことがわかります。
最後にdeafultキーワードについてみてみましょう。
defaultキーワードは、どのパターンにも該当しない場合に行う処理を記述することができます。
PS > $a = 7 PS > switch ( $a ) { >> 1 { Write-Host "`$a は 1 です" } >> 2 { Write-Host "`$a は 2 です" } >> 3 { Write-Host "`$a は 3 です" } >> 4 { Write-Host "`$a は 4 です" } >> 5 { Write-Host "`$a は 5 です" } >> default { Write-Host "該当なし" } >> } >> 該当なし
コメント