Villkorssatser – Switch

Switch-satsen används för att utföra en operation baserat på ett specifikt värde oftast lagrat i en variabel. Till skillnad från if-satsen ger switch-satsen större flexibilitet, mindre kod och låter oss jämföra uttrycket med en serie av villkor. Om uttrycket matchar ett villkor utförs operationen associerad med villkoret.

i PowerShell används switch-satsen för att hantera flera fall (cases) baserat på värdet av en variabel eller ett uttryck. Den är användbar när du har en variabel och vill jämföra dess värde med flera möjliga värden.

Syntax

switch (expression)
{
value1 {code block}
value2 {code block}
value3 {code block}
default {code block}
}

Först illustreras skillnaden med IF-satsen som jämför ett antal värde och säger efter vad för värdet har variabeln:

PS c:\>$number = 3

if ($number -eq 1) {
Write-Output ”The number is 1”
} elseif ($number -eq 2) {
Write-Output ”The number is 2”
} elseif ($number -eq 3) {
Write-Output ”The number is 3”
}
else {
Write-Output ”The number is greater than 3”
}

utdata:

Samma kod kan skrivas med switch-satsen:

switch ($number) {
1 { Write-Output ”The number is 1” }
2 { Write-Output ”The number is 2” }
3 { Write-Output ”The number is 3” }
default { Write-Output ”The number is greater than 3” }
}

Samma kod kan också skrivas så här:

switch (3) {
1 { Write-Output ”The number is 1” }
2 { Write-Output ”The number is 2” }
3 { Write-Output ”The number is 3” }
default { Write-Output ”The number is greater than 3” }
}

Exempel:

  1. Jämföra strängar:
    • PS C:\>$fruit = ”apple”
    • switch ($fruit) {
    • ”apple” { Write-Output ”It’s an apple” }
    • ”banana” { Write-Output ”It’s a banana” }
    • default { Write-Output ”It’s something else” }
    • }
    • Utdata: It’s an apple
  2. Använd wildcard-tecknen:
    • PS C:\>$word = ”PowerShell”
    • switch -wildcard ($word) {
    • ”Power*” { Write-Output ”It starts with Power” }
    • ”*Shell” { Write-Output ”It ends with Shell” }
    • default { Write-Output ”It’s something else” }
    • }
    • Utdata: It starts with Power
  3. Jämföra med intervall:
    • PS C:\>$score = 85
    • switch ($score) {
    • {$_ -lt 60} { Write-Output ”Fail” }
    • {$_ -ge 60 -and $_ -lt 80} { Write-Output ”Pass” }
    • {$_ -ge 80} { Write-Output ”Distinction” }
    • }
    • Utdata: Distinction
    • $_ representerar värdet som utvärderas
  4. Hantera flera värden i en case:
    • $fruit = ”apple”
    • switch ($fruit) {
    • ”apple”, ”banana” { Write-Output ”It’s either an apple or a banana” }
    • ”orange”, ”grape” { Write-Output ”It’s either an orange or a grape” }
    • default { Write-Output ”It’s something else” }
    • }
    • Utdata: It´s either an apple or a banana