Buscar..


Introducción

Una declaración de cambio permite que una variable se pruebe para determinar su igualdad frente a una lista de valores. Cada valor se llama un caso , y la variable que se está activando se comprueba para cada caso de interruptor. Le permite escribir un script que puede elegir entre una serie de opciones, pero sin requerir que escriba una larga serie de sentencias if.

Observaciones

Este tema documenta la instrucción de conmutación utilizada para bifurcar el flujo del script. No lo confunda con los parámetros del interruptor que se utilizan en las funciones como indicadores booleanos.

Interruptor simple

Las declaraciones de cambio comparan un solo valor de prueba con múltiples condiciones y realizan las acciones asociadas para realizar comparaciones exitosas. Puede dar lugar a múltiples coincidencias / acciones.

Dado el siguiente interruptor ...

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

'First Action' emitirá 'First Action' si $myValue se establece como 'First Condition' .

'Section Action' se emitirá si $myValue se establece como 'Second Condition' .

No se emitirá nada si $myValue no coincide con ninguna de las condiciones.

Declaración de cambio con el parámetro Regex

El parámetro -Regex permite que las instrucciones de conmutación realicen una comparación de expresiones regulares con las condiciones.

Ejemplo:

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

Salida:

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

Interruptor simple con rotura

La palabra clave break se puede usar en las instrucciones de cambio para salir de la declaración antes de evaluar todas las condiciones.

Ejemplo:

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

Salida:

First Action
Second Action

Debido a la palabra clave break en la segunda acción, la tercera condición no se evalúa.

Cambiar la instrucción con el parámetro comodín

El parámetro -Wildcard permite que las instrucciones de conmutación realicen una coincidencia de comodín con las condiciones.

Ejemplo:

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

Salida:

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

Declaración de cambio con el parámetro exacto

El parámetro -Exact que las instrucciones de conmutación realicen una coincidencia exacta, que no -Exact entre mayúsculas y minúsculas, con condiciones de cadena.

Ejemplo:

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

Salida:

First Action
Second Action
Third Action

Las acciones primera a tercera se ejecutan porque sus condiciones asociadas coinciden con la entrada. Las cadenas de expresiones regulares y de comodín en las condiciones cuarta y quinta no coinciden.

Tenga en cuenta que la cuarta condición también coincidiría con la cadena de entrada si se realizara una comparación de expresiones regulares, pero en este caso se ignoró porque no lo es.

Declaración de cambio con el parámetro CaseSensitive

El parámetro -CaseSensitive impone instrucciones de conmutación para realizar una comparación exacta y sensible a mayúsculas y minúsculas con las condiciones.

Ejemplo:

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

Salida:

Second Action

La segunda acción es la única acción ejecutada porque es la única condición que coincide exactamente con la cadena 'Condition' cuando se tiene en cuenta la distinción entre mayúsculas y minúsculas.

Cambiar instrucción con parámetro de archivo

El parámetro -file permite que la instrucción de cambio reciba entrada de un archivo. Cada línea del archivo es evaluada por la instrucción switch.

Archivo de ejemplo input.txt :

condition
test

Ejemplo de instrucción de cambio:

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

Salida:

First Action
Second Action

Interruptor simple con condición predeterminada

La palabra clave Default se usa para ejecutar una acción cuando ninguna otra condición coincide con el valor de entrada.

Ejemplo:

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

Salida:

Default Action

Cambiar declaración con expresiones

Las condiciones también pueden ser expresiones:

$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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow