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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow