Ricerca…


introduzione

Un'istruzione switch consente di verificare una variabile per l'uguaglianza rispetto a un elenco di valori. Ogni valore è chiamato caso e la variabile che viene attivata viene controllata per ogni caso di commutazione. Ti consente di scrivere uno script che può scegliere tra una serie di opzioni, ma senza richiedere di scrivere una lunga serie di istruzioni if.

Osservazioni

Questo argomento sta documentando l' istruzione switch usata per ramificare il flusso dello script. Non confonderlo con i parametri switch che vengono utilizzati in funzioni come flag booleani.

Interruttore semplice

Le istruzioni switch confrontano un singolo valore di test con più condizioni ed eseguono tutte le azioni associate per confronti riusciti. Può risultare in più partite / azioni.

Dato il seguente interruttore ...

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

'First Action' verrà emesso se $myValue è impostato come 'First Condition' .

'Section Action' verrà emesso se $myValue è impostato come 'Second Condition' .

Nulla verrà emesso se $myValue non corrisponde a nessuna delle due condizioni.

Switch Statement con Regex Parameter

Il parametro -Regex consente alle istruzioni switch di eseguire la corrispondenza delle espressioni regolari rispetto alle condizioni.

Esempio:

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

Produzione:

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

Interruttore semplice con pausa

La parola chiave break può essere utilizzata nelle istruzioni switch per uscire dall'istruzione prima di valutare tutte le condizioni.

Esempio:

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

Produzione:

First Action
Second Action

A causa della parola chiave di break nella seconda azione, la terza condizione non viene valutata.

Passa istruzione con parametro jolly

Il parametro -Wildcard consente alle istruzioni switch di eseguire la corrispondenza con caratteri jolly rispetto alle condizioni.

Esempio:

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

Produzione:

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

Passa istruzione con parametro esatto

Il parametro -Exact impone le istruzioni switch per eseguire una corrispondenza esatta, senza distinzione tra maiuscole e minuscole e condizioni stringa.

Esempio:

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

Produzione:

First Action
Second Action
Third Action

Le azioni dalla prima alla terza vengono eseguite perché le condizioni associate corrispondono all'ingresso. Le stringhe regex e jolly nella quarta e quinta condizione non corrispondono.

Si noti che la quarta condizione corrisponderebbe anche alla stringa di input se veniva eseguita la corrispondenza delle espressioni regolari, ma in questo caso è stata ignorata perché non lo è.

Switch Statement con parametro CaseSensitive

Il parametro -CaseSensitive applica le istruzioni switch per eseguire una corrispondenza esatta e sensibile al maiuscolo / minuscolo rispetto alle condizioni.

Esempio:

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

Produzione:

Second Action

La seconda azione è l'unica azione eseguita perché è l'unica condizione che corrisponde esattamente alla stringa 'Condition' quando si tiene conto della distinzione tra maiuscole e minuscole.

Passa l'istruzione con il parametro File

Il parametro -file consente all'istruzione switch di ricevere input da un file. Ogni riga del file viene valutata dall'istruzione switch.

File di esempio input.txt :

condition
test

Esempio di istruzione switch:

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

Produzione:

First Action
Second Action

Interruttore semplice con condizione predefinita

La parola chiave Default viene utilizzata per eseguire un'azione quando nessun'altra condizione corrisponde al valore di input.

Esempio:

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

Produzione:

Default Action

Cambia istruzione con le espressioni

Le condizioni possono anche essere espressioni:

$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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow