Suche…


Einführung

Mit einer switch-Anweisung kann eine Variable auf Gleichheit mit einer Liste von Werten getestet werden. Jeder Wert ist ein Fall genannt, und die Variable umgeschaltet wird auf für jedes Schaltergehäuse überprüft. Damit können Sie ein Skript schreiben, das aus einer Reihe von Optionen auswählen kann, ohne dass Sie dazu eine lange Reihe von if-Anweisungen schreiben müssen.

Bemerkungen

In diesem Thema wird die switch-Anweisung beschrieben, die zum Verzweigen des Skriptflusses verwendet wird. Verwechseln Sie es nicht mit Schalterparametern, die in Funktionen als boolesche Flags verwendet werden.

Einfacher Schalter

Switch-Anweisungen vergleichen einen einzelnen Testwert mit mehreren Bedingungen und führen alle zugehörigen Aktionen für erfolgreiche Vergleiche aus. Dies kann zu mehreren Übereinstimmungen / Aktionen führen.

Bei folgendem Wechsel ...

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

'First Action' wird ausgegeben, wenn $myValue als 'First Condition' .

'Section Action' wird ausgegeben, wenn $myValue als 'Second Condition' .

Es wird nichts ausgegeben, wenn $myValue keine der Bedingungen erfüllt.

Wechselanweisung mit Regex-Parameter

Mit -Regex Parameter -Regex können switch-Anweisungen einen Abgleich mit regulären Ausdrücken mit Bedingungen durchführen.

Beispiel:

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

Ausgabe:

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

Einfacher Schalter mit Pause

Das Schlüsselwort break kann in switch-Anweisungen zum Beenden der Anweisung verwendet werden, bevor alle Bedingungen ausgewertet werden.

Beispiel:

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

Ausgabe:

First Action
Second Action

Aufgrund des Schlüsselworts break in der zweiten Aktion wird die dritte Bedingung nicht ausgewertet.

Wechselanweisung mit Platzhalterparameter

Mit -Wildcard Parameter -Wildcard können switch-Anweisungen einen Platzhalterabgleich mit Bedingungen durchführen.

Beispiel:

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

Ausgabe:

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

Wechselanweisung mit genauem Parameter

Der Parameter -Exact erzwingt, dass switch-Anweisungen einen exakten, von der Groß- und Kleinschreibung abhängigen Abgleich mit Zeichenfolgenbedingungen durchführen.

Beispiel:

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

Ausgabe:

First Action
Second Action
Third Action

Die erste bis dritte Aktion wird ausgeführt, weil ihre zugehörigen Bedingungen mit der Eingabe übereinstimmen. Die Regex- und Platzhalterzeichenfolgen in der vierten und fünften Bedingung stimmen nicht überein.

Beachten Sie, dass die vierte Bedingung auch mit der Eingabezeichenfolge übereinstimmen würde, wenn der Abgleich mit regulären Ausdrücken durchgeführt wurde, in diesem Fall jedoch ignoriert wurde, da dies nicht der Fall ist.

Switch-Anweisung mit CaseSensitive-Parameter

Mit -CaseSensitive Parameter -CaseSensitive werden Switch-Anweisungen -CaseSensitive , um eine genaue, von der Groß- und Kleinschreibung abhängige Übereinstimmung mit Bedingungen durchzuführen.

Beispiel:

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

Ausgabe:

Second Action

Die zweite Aktion ist die einzige Aktion, die ausgeführt wird, da sie die einzige Bedingung ist, die genau mit der Zeichenfolge 'Condition' übereinstimmt 'Condition' wenn die Groß- / Kleinschreibung berücksichtigt wird.

Wechselanweisung mit Dateiparameter

Mit -file Parameter -file kann die switch-Anweisung Eingaben von einer Datei empfangen. Jede Zeile der Datei wird von der switch-Anweisung ausgewertet.

Beispieldatei input.txt :

condition
test

Beispiel für eine Wechselanweisung:

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

Ausgabe:

First Action
Second Action

Einfacher Switch mit Standardbedingung

Mit dem Default wird eine Aktion ausgeführt, wenn keine anderen Bedingungen mit dem Eingabewert übereinstimmen.

Beispiel:

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

Ausgabe:

Default Action

Anweisung mit Ausdrücken wechseln

Bedingungen können auch Ausdrücke sein:

$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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow