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




Tabla de contenido