Zoeken…


Invoering

Met een schakelinstructie kan een variabele worden getest op gelijkheid met een zoeklijst. Elke waarde wordt een case genoemd en de variabele die wordt ingeschakeld , wordt voor elke switch-case gecontroleerd. Hiermee kunt u een script schrijven dat uit een reeks opties kan kiezen, maar zonder dat u een lange reeks if-instructies hoeft te schrijven.

Opmerkingen

In dit onderwerp wordt de switch-instructie gedocumenteerd die wordt gebruikt voor het vertakken van de stroom van het script. Verwar het niet met schakelparameters die worden gebruikt in functies als Booleaanse vlaggen.

Eenvoudige schakelaar

Switch-instructies vergelijken een enkele testwaarde met meerdere voorwaarden en voert bijbehorende acties uit voor succesvolle vergelijkingen. Het kan resulteren in meerdere wedstrijden / acties.

Gegeven de volgende schakelaar ...

switch($myValue)
{
    'First Condition'    { 'First Action' }
    'Second Condition'   { 'Second Action' }
}

'First Action' wordt uitgevoerd als $myValue is ingesteld als 'First Condition' .

'Section Action' $myValue 'Section Action' wordt uitgevoerd als $myValue is ingesteld als 'Second Condition' .

Er wordt niets uitgevoerd als $myValue niet aan beide voorwaarden voldoet.

Switch-instructie met Regex-parameter

Met de parameter -Regex kunnen schakelopdrachten reguliere expressie vergelijken met voorwaarden.

Voorbeeld:

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'} 
}

Output:

One or more non-digits
Any single char.
Anchors and one or more word chars.

Eenvoudige schakelaar met pauze

Het sleutelwoord break kan worden gebruikt in schakelinstructies om de instructie af te sluiten voordat alle voorwaarden worden geëvalueerd.

Voorbeeld:

switch('Condition')
{
  'Condition'
  {
    'First Action'
  }
  'Condition'
  {
    'Second Action'
    break
  }
  'Condition'
  {
    'Third Action'
  }
}

Output:

First Action
Second Action

Vanwege het sleutelwoord break in de tweede actie wordt de derde voorwaarde niet geëvalueerd.

Schakel Statement met Wildcard Parameter

Met de parameter -Wildcard kunnen schakelopdrachten jokertekens vergelijken met voorwaarden.

Voorbeeld:

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'} 
}

Output:

Normal match
Zero or more wildcard chars.
Range and set of chars.
Single char. wildcard

Schakel instructie met exacte parameter

De parameter -Exact dwingt schakelinstructies af om exacte, niet-hoofdlettergevoelige overeenkomsten uit te voeren met string-voorwaarden.

Voorbeeld:

switch -Exact ('Condition')
{ 
  'condition'   {'First Action'}
  'Condition'   {'Second Action'} 
  'conditioN'   {'Third Action'}  
  '^*ondition$' {'Fourth Action'} 
  'Conditio*'   {'Fifth Action'} 
}

Output:

First Action
Second Action
Third Action

De eerste tot en met derde acties worden uitgevoerd omdat de bijbehorende voorwaarden overeenkomen met de invoer. De regex- en jokertekens in de vierde en vijfde voorwaarden komen niet overeen.

Merk op dat de vierde voorwaarde ook zou overeenkomen met de invoertekenreeks als reguliere expressie matching werd uitgevoerd, maar in dit geval werd genegeerd omdat dit niet het geval is.

Schakel Statement met CaseSensitive Parameter

De parameter -CaseSensitive dwingt schakelinstructies af om exacte, hoofdlettergevoelige overeenkomsten uit te voeren tegen voorwaarden.

Voorbeeld:

switch -CaseSensitive ('Condition')
{ 
  'condition'   {'First Action'}
  'Condition'   {'Second Action'} 
  'conditioN'   {'Third Action'}  
}

Output:

Second Action

De tweede actie is de enige uitgevoerde actie omdat het de enige voorwaarde is die exact overeenkomt met de tekenreeks 'Condition' wanneer rekening wordt gehouden met hoofdlettergevoeligheid.

Schakel instructie met bestandsparameter

Met de parameter -file kan de switch-opdracht invoer ontvangen van een bestand. Elke regel van het bestand wordt geëvalueerd door de schakelopdracht.

Voorbeeldbestand input.txt :

condition
test

Voorbeeld schakelinstructie:

switch -file input.txt
{ 
  'condition' {'First Action'}
  'test'      {'Second Action'} 
  'fail'      {'Third Action'}   
}

Output:

First Action
Second Action

Eenvoudige schakelaar met standaardconditie

Het Default sleutelwoord wordt gebruikt om een actie uit te voeren wanneer er geen andere voorwaarden overeenkomen met de invoerwaarde.

Voorbeeld:

switch('Condition')
{
  'Skip Condition'
  {
    'First Action'
  }
  'Skip This Condition Too'
  {
    'Second Action'
  }
  Default
  {
    'Default Action'
  }
}

Output:

Default Action

Schakel verklaring met uitdrukkingen

Voorwaarden kunnen ook uitdrukkingen zijn:

$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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow