about_Switch
Se aplica a: Windows PowerShell 2.0, Windows PowerShell 3.0
TEMA
about_Switch
DESCRIPCIÓN BREVE
Explica cómo usar un modificador para controlar varias instrucciones If.
DESCRIPCIÓN LARGA
Para comprobar una condición en un script o una función, use una instrucción If. La instrucción If puede comprobar muchos tipos de condiciones, incluido el valor de las variables y las propiedades de los objetos.
Para comprobar varias condiciones, use una instrucción Switch. La instrucción Switch es equivalente a una serie de instrucciones If, pero es más sencilla. La instrucción Switch enumera cada condición y una acción opcional. Si se obtiene una condición, se realiza la acción.
Una instrucción Switch básica tiene el formato siguiente:
Switch (<test-value>)
{
<condition> {<action>}
<condition> {<action>}
}
Por ejemplo, la siguiente instrucción Switch compara el valor de prueba 3 con cada una de las condiciones. Cuando el valor de prueba coincide con la condición, se realiza la acción.
PS> switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
}
It is three.
En este sencillo ejemplo, el valor se compara con cada condición en la lista, incluso si hay una coincidencia con el valor 3. La siguiente instrucción Switch tiene dos condiciones para un valor de 3. Muestra que, de forma predeterminada, se prueban todas las condiciones.
PS> switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
3 {"Three again."}
}
It is three.
Three again.
Para indicarle a la instrucción Switch que deje de comparar después de encontrar una coincidencia, use la instrucción Break. La instrucción Break termina la instrucción Switch.
PS> switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."; Break}
4 {"It is four."}
3 {"Three again."}
}
It is three.
Si el valor de prueba es una colección, como una matriz, cada elemento de la colección se evalúa en el orden en el que aparece. En los ejemplos siguientes se evalúa 4 y, a continuación, 2.
PS> switch (4, 2)
{
1 {"It is one." }
2 {"It is two." }
3 {"It is three." }
4 {"It is four." }
3 {"Three again."}
}
It is four.
It is two.
Las instrucciones Break se aplican a la colección, no a cada valor, tal como se muestra en el ejemplo siguiente. La instrucción Break termina la instrucción Switch en la condición del valor 4.
PS> switch (4, 2)
{
1 {"It is one."; Break}
2 {"It is two." ; Break }
3 {"It is three." ; Break }
4 {"It is four." ; Break }
3 {"Three again."}
}
It is four.
SINTAXIS
La sintaxis completa de la instrucción Switch es la siguiente:
switch [-regex|-wildcard|-exact][-casesensitive] (<value>)
o
switch [-regex|-wildcard|-exact][-casesensitive] -file filename
seguido de
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
Si no se usan parámetros, la instrucción Switch busca para el valor una coincidencia exacta que no distingue mayúsculas de minúsculas. Si el valor es una colección, cada elemento se evalúa en el orden en el que aparece.
La instrucción Switch debe incluir al menos una instrucción de condición.
La cláusula Default se desencadena cuando el valor no coincide con ninguna de las condiciones. Es equivalente a una cláusula Else en una instrucción If. Solo se permite una cláusula Default en cada instrucción Switch.
La instrucción Switch tiene los parámetros siguientes:
Regex
Busca coincidencias de expresiones regulares del valor con respecto a la condición. Si usa Regex, se omiten Wildcard y Exact. Además, si la cláusula de coincidencia no es una cadena, se omite este parámetro.
Example:
PS> switch ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
3 {"Three again."; Break}
"fo*" {"That's too many."}
}
PS> switch -Regex ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
3 {"Three again."; Break}
"fo*" {"That's too many."}
}
That's too many.
Wildcard
Indica que la condición es una cadena de caracteres comodín. Si usa Wildcard, se omiten Regex y Exact. Además, si la cláusula de coincidencia no es una cadena, se omite este parámetro.
Exact
Indica que la cláusula de coincidencia, si es una cadena, debe coincidir exactamente. Si usa Exact, se omiten Regex, Wildcard y Exact. Además, si la cláusula de coincidencia no es una cadena, se omite este parámetro.
CaseSensitive
Realiza una búsqueda de coincidencia que distingue mayúsculas de minúsculas. Si la cláusula de coincidencia no es una cadena, se omite este parámetro.
Archivo
Toma la entrada de un archivo, en lugar de tomarla de una instrucción de valor. Si se incluyen varios parámetros File, solo se usa el último. La instrucción Switch lee y evalúa cada línea del archivo.
Se permiten varias instancias de Regex, Wildcard o Exact. Sin embargo, solo es efectivo el último parámetro usado.
Si el valor coincide con varias condiciones, se ejecuta la acción de cada condición. Para cambiar este comportamiento, use las palabras clave Break o Continue.
La palabra clave Break detiene el procesamiento y sale de la instrucción Switch.
La palabra clave Continue sigue procesando el valor actual y los valores posteriores.
Si la condición es una expresión o un bloque de script, se evalúa justo antes de compararla con el valor. El valor se asigna a la variable automática $_ y está disponible en la expresión. Si la expresión es True o coincide con el valor, se produce la coincidencia. La expresión se evalúa en su propio ámbito.
La palabra clave "Default" especifica una condición que solo se evalúa si ninguna otra condición coincide con el valor.
La acción de cada condición es independiente de las acciones de las demás condiciones. La llave de cierre (}) de la acción es un salto explícito.
VEA TAMBIÉN
about_Break
about_Continue
about_If
about_Script_Blocks