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