Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
DESCRIPCIÓN BREVE
Describe una instrucción que se puede utilizar para salir inmediatamente de las instrucciones Foreach, For, While, Do o Switch.
DESCRIPCIÓN LARGA
Cuando aparece una instrucción Break en un bucle, como un bucle Foreach, For o While, la instrucción Break hace que PowerShell salga inmediatamente del bucle. En una construcción de Switch, Break hace que PowerShell salga del bloque de código de Switch.
Una instrucción Break puede incluir una etiqueta que le permita salir de los bucles incrustados. Una etiqueta puede especificar cualquier palabra clave de bucle, como Foreach, For o While, en un script.
En el ejemplo siguiente se muestra cómo utilizar una instrucción Break para salir de una instrucción For:
for($i=1; $i -le 10; $i++) {
Write-Host $i
break
}
En este ejemplo, la instrucción Break sale del bucle For cuando la variable $i es igual a 1. Aunque la instrucción For se evalúa como True hasta que $i sea mayor que 10, PowerShell alcanza la instrucción break la primera vez que se ejecuta el bucle For.
Es más común utilizar la instrucción Break en un bucle en el que se debe cumplir una condición interna. Considere el siguiente ejemplo de instrucción Foreach:
$i=0
$varB = 10,20,30,40
foreach ($val in $varB) {
$i++
if ($val -eq 30) {
break
}
}
Write-Host "30 was found in array position $i"
En este ejemplo, la instrucción Foreach recorre en iteración la matriz $varB. Cada vez que se ejecuta el bloque de código, la variable $i se incrementa en 1. La instrucción If se evalúa como False las dos primeras veces que se ejecuta el bucle. La tercera vez que se ejecuta el bucle, $i es igual a 3 y la variable $val es igual a 30. En este punto, se ejecuta la instrucción Break y se cierra el bucle Foreach.
Se rompe fuera de las otras instrucciones de bucle de la misma manera que se rompe el bucle Foreach. En el ejemplo siguiente, la instrucción Break sale de una instrucción While cuando se detecta una excepción DivideByZeroException mediante la instrucción Trap.
$i = 3
while ($true) {
trap [DivideByZeroException] {
Write-Host 'divide by zero trapped'
break
}
1 / $i--
}
Una instrucción Break puede incluir una etiqueta. Si usa la palabra clave Break con una etiqueta, PowerShell sale del bucle etiquetado en lugar de salir del bucle actual. La sintaxis de una etiqueta es la siguiente (en este ejemplo se muestra una etiqueta en un bucle While):
:miEtiqueta while (<condition>) { <statement list>}
La etiqueta es un signo de dos puntos seguido de un nombre que asigne. La etiqueta debe ser el primer token de una instrucción y debe ir seguida de la palabra clave de bucle, como While.
En PowerShell, solo las palabras clave de bucle, como Foreach, For y While, pueden tener una etiqueta.
Break mueve la ejecución fuera del bucle etiquetado. En los bucles incrustados, esto tiene un resultado diferente al de la palabra clave Break cuando se usa sola. Este ejemplo de esquema tiene una instrucción While con una instrucción For:
:myLabel while (<condition 1>) {
for ($item in $items) {
if (<condition 2>) {
break myLabel
}
$item = $x # A statement inside the For-loop
}
}
$a = $c # A statement after the labeled While-loop
Si la condición 2 se evalúa como True, la ejecución del script salta a la instrucción después del bucle etiquetado. En el ejemplo, la ejecución comienza de nuevo con la instrucción "$a = $c".
Puede anidar muchos bucles etiquetados, como se muestra en el siguiente ejemplo de esquema.
:red while (<condition1>) {
:yellow while (<condition2>) {
while (<condition3>) {
if ($a) {break}
if ($b) {break red}
if ($c) {break yellow}
}
Write-Host "After innermost loop"
}
Write-Host "After yellow loop"
}
Write-Host "After red loop"
Si la variable $b se evalúa como True, la ejecución del script se reanuda después del bucle etiquetado como "rojo". Si la variable $c se evalúa como True, la ejecución del control de script se reanuda después del bucle etiquetado como "amarillo".
Si la variable $a se evalúa como True, la ejecución se reanuda después del bucle más interno. No se necesita ninguna etiqueta.
PowerShell no limita hasta qué punto las etiquetas pueden reanudar la ejecución. La etiqueta puede incluso pasar el control a través de los límites de script y de llamada de función.
La palabra clave Break se usa para salir de la construcción Switch. Por ejemplo, la siguiente instrucción Switch utiliza instrucciones Break para probar la condición más específica:
$var = "word2"
switch -regex ($var) {
"word2" {
Write-Host "Exact" $_
break
}
"word.*" {
Write-Host "Match on the prefix" $_
break
}
"w.*" {
Write-Host "Match on at least the first letter" $_
break
}
default {
Write-Host "No match" $_
break
}
}
En este ejemplo, la variable $var se crea e inicializa en un valor de cadena de "word2". La instrucción Switch utiliza la clase Regex para hacer coincidir primero el valor de la variable con el término "word2". (La clase Regex es una expresión regular de la clase Microsoft .NET Framework). Dado que el valor de la variable y la primera prueba de la instrucción Switch coinciden, se ejecuta el primer bloque de código de la instrucción Switch.
Cuando PowerShell llega a la primera instrucción Break, se cierra la instrucción Switch. Si se quitan las cuatro instrucciones Break del ejemplo, se cumplen las cuatro condiciones. En este ejemplo se utiliza la instrucción break para mostrar los resultados cuando se cumple la condición más específica.