PowerShell
Byt uttalande
Sök…
Introduktion
En switch-uttalande gör det möjligt att testa en variabel för jämlikhet mot en lista med värden. Varje värde kallas ett fall och variabeln som slås på kontrolleras för varje switchfall. Det gör att du kan skriva ett skript som kan välja mellan en serie alternativ, men utan att kräva att du skriver en lång serie if-uttalanden.
Anmärkningar
Det här ämnet dokumenterar switch-uttalandet som används för att förgrena flödet i skriptet. Förväxla inte det med switchparametrar som används i funktioner som booleska flaggor.
Enkel switch
Växlingssatser jämför ett enda testvärde med flera villkor och utför alla tillhörande åtgärder för framgångsrika jämförelser. Det kan resultera i flera matchningar / åtgärder.
Med tanke på följande växel ...
switch($myValue)
{
'First Condition' { 'First Action' }
'Second Condition' { 'Second Action' }
}
'First Action'
kommer att matas ut om $myValue
är inställt som 'First Condition'
.
'Section Action'
kommer att matas ut om $myValue
är inställt som 'Second Condition'
.
Ingenting kommer att matas ut om $myValue
inte matchar någon av villkoren.
Byt uttalande med Regex-parameter
Parametern -Regex
gör det möjligt för switch-uttalanden att utföra regelbundna uttrycksmatchningar mot villkor.
Exempel:
switch -Regex ('Condition')
{
'Con\D+ion' {'One or more non-digits'}
'Conditio*$' {'Zero or more "o"'}
'C.ndition' {'Any single char.'}
'^C\w+ition$' {'Anchors and one or more word chars.'}
'Test' {'No match'}
}
Produktion:
One or more non-digits
Any single char.
Anchors and one or more word chars.
Enkel switch med paus
Den break
sökord kan användas i switch uttalanden att lämna uttalande inför utvärdera alla förhållanden.
Exempel:
switch('Condition')
{
'Condition'
{
'First Action'
}
'Condition'
{
'Second Action'
break
}
'Condition'
{
'Third Action'
}
}
Produktion:
First Action
Second Action
På grund av det break
nyckelordet i den andra åtgärden, är det tredje villkoret inte utvärderas.
Byt uttalande med jokerteckenparameter
Parametern -Wildcard
gör det möjligt för switch-uttalanden att utföra jokerteckenmatchning mot villkor.
Exempel:
switch -Wildcard ('Condition')
{
'Condition' {'Normal match'}
'Condit*' {'Zero or more wildcard chars.'}
'C[aoc]ndit[f-l]on' {'Range and set of chars.'}
'C?ndition' {'Single char. wildcard'}
'Test*' {'No match'}
}
Produktion:
Normal match
Zero or more wildcard chars.
Range and set of chars.
Single char. wildcard
Byt uttalande med exakt parameter
Parametern -Exact
tvingar fram switch-uttalanden för att utföra exakt, okänslig skiftande matchning mot strängförhållanden.
Exempel:
switch -Exact ('Condition')
{
'condition' {'First Action'}
'Condition' {'Second Action'}
'conditioN' {'Third Action'}
'^*ondition$' {'Fourth Action'}
'Conditio*' {'Fifth Action'}
}
Produktion:
First Action
Second Action
Third Action
De första till tredje åtgärderna utförs eftersom deras tillhörande förhållanden matchade ingången. Regex- och jokardsträngarna under fjärde och femte villkoren matchar inte.
Observera att det fjärde villkoret också skulle matcha inmatningssträngen om regelbundet uttrycksmatchning utfördes, men ignorerades i det här fallet eftersom det inte är det.
Byt uttalande med CaseSensitive Parameter
Parametern -CaseSensitive
verkställer switch-uttalanden för att utföra exakt, skiftlägeskänslig matchning mot villkor.
Exempel:
switch -CaseSensitive ('Condition')
{
'condition' {'First Action'}
'Condition' {'Second Action'}
'conditioN' {'Third Action'}
}
Produktion:
Second Action
Den andra åtgärden är den enda åtgärden som utförs eftersom det är det enda villkoret som exakt matchar strängen 'Condition'
när du redogör för ärende-känslighet.
Byt uttalande med filparameter
Parametern- -file
gör det möjligt för switch-uttalandet att ta emot input från en fil. Varje rad i filen utvärderas av switch-uttalandet.
Exempel på input.txt
:
condition
test
Exempel switch-uttalande:
switch -file input.txt
{
'condition' {'First Action'}
'test' {'Second Action'}
'fail' {'Third Action'}
}
Produktion:
First Action
Second Action
Enkel switch med standardvillkor
Default
används för att utföra en åtgärd när inga andra villkor matchar ingångsvärdet.
Exempel:
switch('Condition')
{
'Skip Condition'
{
'First Action'
}
'Skip This Condition Too'
{
'Second Action'
}
Default
{
'Default Action'
}
}
Produktion:
Default Action
Byt uttalande med uttryck
Förhållanden kan också vara uttryck:
$myInput = 0
switch($myInput) {
# because the result of the expression, 4,
# does not equal our input this block should not be run.
(2+2) { 'True. 2 +2 = 4' }
# because the result of the expression, 0,
# does equal our input this block should be run.
(2-2) { 'True. 2-2 = 0' }
# because our input is greater than -1 and is less than 1
# the expression evaluates to true and the block should be run.
{ $_ -gt -1 -and $_ -lt 1 } { 'True. Value is 0' }
}
#Output
True. 2-2 = 0
True. Value is 0