You are on page 1of 4

TEMA

about_Break
DESCRIPCIN BREVE
Describe una instruccin que se puede utilizar para salir
inmediatamente las instrucciones Foreach, For, While, Do o Switch.
DESCRIPCIN DETALLADA
Cuando una instruccin Break aparece en un bucle (como un bucle
Foreach, For, Switch o While), la instruccin Break hace que Windows
PowerShell salga inmediatamente del bucle. En una construccin Switch
que no sea un bucle, Break hace que Windows PowerShell salga del bloque
de cdigo Switch.


Una instruccin 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 instruccin Break.
En el siguiente ejemplo se muestra cmo usar una instruccin
Break para cerrar una instruccin For:
for($i=1; $i -le 10; $i++)
{
Write-Host $i
break
}
En este ejemplo, la instruccin Break sale del bucle For cuando
la variable $i es igual a 1. Aunque la instruccin For se evala
en True hasta que $i sea mayor que 10, Windows PowerShell llega a la
instruccin Break la primera vez que se ejecuta el bucle For.
Es ms comn para utilizar la instruccin Break en un bucle donde es
necesario que se cumpla una condicin interna. Observe el siguiente
ejemplo de la instruccin 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 posicin de matriz $i"
En este ejemplo, la instruccin Foreach recorre la matriz $varB
en iteracin. Cada vez que se ejecuta el bloque de cdigo, la
variable $i se incrementa en 1. La instruccin If se evala 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 instruccin Break y
el bucle Foreach se cierra.
Para salir de las dems instrucciones de bucle se hace lo mismo
que para salir del bucle Foreach. En el siguiente ejemplo, la
instruccin Break cierra una instruccin While cuando se
intercepta una excepcin DivideByZeroException con la instruccin
Trap.
$i = 3
while ($true)
{
trap [DivideByZeroException]
{
Write-Host "se intercept una divisin por cero" break
}
1 / $i--
}
Una instruccin 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 (<condicin>) { <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
smbolo (token) de una instruccin 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 ejecucin 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 esquemtico hay una
instruccin While con una instruccin For:

:miEtiqueta while (<condicin 1>)
{
for ($item in $items)
{
if (<condicin 2>) { break miEtiqueta }
$item = $x # Instruccin dentro del bucle For }
}
}
$a = $c # Instruccin despus del bucle While etiquetado
Si condicin 2 se evala en True, la ejecucin del script va
directamente a la instruccin situada despus del bucle
etiquetado. En el ejemplo, la ejecucin se inicia de nuevo con la
instruccin "$a = $c".
Es posible anidar muchos bucles etiquetados, como se muestra en
ejemplo esquemtico el siguiente.
:rojo while (<condicin1>)
{
:amarillo while (<condicin2>)
{
while (<condicin3>)
{
if ($a) {break}
if ($b) {break rojo}
if ($c) {break amarillo}
}
# Despus del bucle ms interno
}
# Despus del bucle "amarillo"
}
# Despus del bucle "rojo"
Si la variable $b se evala en True, la ejecucin del script se
reanuda despus del bucle etiquetado como "rojo". Si la variable $c se
evala en True, la ejecucin del control de script se reanuda despus
del bucle etiquetado como "amarillo".
Si la variable $a se evala en True, la ejecucin se reanuda
despus del bucle ms interno. No se necesita ninguna etiqueta.
Windows PowerShell no limita a qu distancia pueden reanudar la
ejecucin las etiquetas. La etiqueta puede pasar el control
incluso a travs de los lmites de las llamadas de los script y las
funciones.
La palabra clave Break se utiliza para salir de la construccin
Switch. Por ejemplo, la siguiente instruccin Switch usa instrucciones
Break para comprobar si se cumple la condicin ms especfica:
$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 instruccin Switch usa la clase Regex para
hallar primero la coincidencia del valor de la variable con el
trmino "word2". (La clase Regex es una clase de Microsoft .NET
Framework de expresin regular.) Dado que coinciden el valor de la
variable y la primera prueba de la instruccin Switch, se ejecuta el
primer bloque de cdigo de esta instruccin.
Cuando Windows PowerShell llega a la primera instruccin Break, la
instruccin Switch se cierra. Si se quitaran las cuatro instrucciones
Break del ejemplo, se cumpliran las cuatro condiciones. En este
ejemplo se usa la instruccin Break para mostrar los resultados
cuando se cumple la condicin ms especfica.
VEA TAMBIN
about_Comparison_Operators
about_For
about_Foreach
about_Switch
about_While

You might also like