Está en la página 1de 4

TEMA

about_Break

DESCRIPCIÓN BREVE
Describe una instrucción que se puede utilizar para salir
inmediatamente las instrucciones Foreach, For, While, Do o Switch.

DESCRIPCIÓN DETALLADA
Cuando una instrucción Break aparece en un bucle (como un bucle
Foreach, For, Switch o While), la instrucción Break hace que Windows
PowerShell salga inmediatamente del bucle. En una construcción Switch
que no sea un bucle, Break hace que Windows PowerShell salga del bloque
de código Switch.

Una instrucción Break puede incluir una etiqueta que permita


salir de los bucles incrustados. Una etiqueta puede especificar
cualquier palabra clave de bucle, como Foreach, For o While, en
un script. Cuando se utiliza una etiqueta, Break sale del bucle
especificado. Break sale del bucle especificado sin tener en
cuenta en qué bucle se encuentre la instrucción Break.

En el siguiente ejemplo se muestra cómo usar una instrucción


Break para cerrar 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
en True hasta que $i sea mayor que 10, Windows PowerShell llega a la
instrucción Break la primera vez que se ejecuta el bucle For.

Es más común para utilizar la instrucción Break en un bucle donde es


necesario que se cumpla una condición interna. Observe el siguiente
ejemplo de la instrucción Foreach:

$i=0
$varB = 10,20,30,40
foreach ($val in $varB)
{
$i++
if ($val -eq 30)
{
break
}
}
Write-Host "Se encontró 30 en la posición de matriz $i"

En este ejemplo, la instrucción Foreach recorre la matriz $varB


en iteración. Cada vez que se ejecuta el bloque de código, la
variable $i se incrementa en 1. La instrucción If se evalúa en
False las primeras dos 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
el bucle Foreach se cierra.

Para salir de las demás instrucciones de bucle se hace lo mismo


que para salir del bucle Foreach. En el siguiente ejemplo, la
instrucción Break cierra una instrucción While cuando se
intercepta una excepción DivideByZeroException con la instrucción
Trap.

$i = 3
while ($true)
{
trap [DivideByZeroException]
{
Write-Host "se interceptó una división por cero" break
}
1 / $i--
}

Una instrucción Break puede incluir una etiqueta. Si utiliza la


palabra clave Break con una etiqueta, Windows 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 (<condición>) { <lista de instrucciones>}

La etiqueta está compuesta de un signo de dos puntos seguido por


un nombre asignado por el usuario. La etiqueta debe ser el primer
símbolo (token) de una instrucción y debe ir seguida de la
palabra clave de bucle (en este caso, While).

En Windows PowerShell, solamente las palabras clave de bucle,


como Foreach, For y While, pueden tener etiqueta.

Break saca la ejecución del bucle etiquetado. En los bucles


incrustados, el resultado es distinto que cuando se utiliza la
palabra clave Break por sí sola. En este ejemplo esquemático hay una
instrucción While con una instrucción For:

:miEtiqueta while (<condición 1>)


{
for ($item in $items)
{
if (<condición 2>) { break miEtiqueta }
$item = $x # Instrucción dentro del bucle For }
}
}
$a = $c # Instrucción después del bucle While etiquetado

Si condición 2 se evalúa en True, la ejecución del script va


directamente a la instrucción situada después del bucle
etiquetado. En el ejemplo, la ejecución se inicia de nuevo con la
instrucción "$a = $c".

Es posible anidar muchos bucles etiquetados, como se muestra en


ejemplo esquemático el siguiente.

:rojo while (<condición1>)


{
:amarillo while (<condición2>)
{
while (<condición3>)
{
if ($a) {break}
if ($b) {break rojo}
if ($c) {break amarillo}
}
# Después del bucle más interno
}
# Después del bucle "amarillo"
}
# Después del bucle "rojo"

Si la variable $b se evalúa en True, la ejecución del script se


reanuda después del bucle etiquetado como "rojo". Si la variable $c se
evalúa en True, la ejecución del control de script se reanuda después
del bucle etiquetado como "amarillo".

Si la variable $a se evalúa en True, la ejecución se reanuda


después del bucle más interno. No se necesita ninguna etiqueta.

Windows PowerShell no limita a qué distancia pueden reanudar la


ejecución las etiquetas. La etiqueta puede pasar el control
incluso a través de los límites de las llamadas de los script y las
funciones.

La palabra clave Break se utiliza para salir de la construcción


Switch. Por ejemplo, la siguiente instrucción Switch usa instrucciones
Break para comprobar si se cumple la condición más específica:

$var = "word2"
switch -regex ($var)
{
"word2"
{
Write-Host "Exacto" $_
break
}

"word.*"
{
Write-Host "Coincide el prefijo" $_ break
}

"w.*"
{
Write-Host "Coincide al menos la primera letra" $_ break
}

default
{
Write-Host "No coincide nada" $_
break
}
}

En este ejemplo, la variable $var se crea e inicializa en el


valor de cadena "word2". La instrucción Switch usa la clase Regex para
hallar primero la coincidencia del valor de la variable con el
término "word2". (La clase Regex es una clase de Microsoft .NET
Framework de expresión regular.) Dado que coinciden el valor de la
variable y la primera prueba de la instrucción Switch, se ejecuta el
primer bloque de código de esta instrucción.

Cuando Windows PowerShell llega a la primera instrucción Break, la


instrucción Switch se cierra. Si se quitaran las cuatro instrucciones
Break del ejemplo, se cumplirían las cuatro condiciones. En este
ejemplo se usa la instrucción Break para mostrar los resultados
cuando se cumple la condición más específica.

VEA TAMBIÉN
about_Comparison_Operators
about_For
about_Foreach
about_Switch
about_While

También podría gustarte