PowerShell
Cambiar la declaración
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