about_Break

Se aplica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

Insertar la introducción aquí.

TEMA

about_Break

DESCRIPCIÓN BREVE

Describe una instrucción que se puede usar para salir inmediatamente de las instrucciones Foreach, For, While, Do o Switch.

DESCRIPCIÓN LARGA

Cuando aparece una instrucción Break en un bucle (por ejemplo, un bucle Foreach, For, Switch o While), la instrucción Break provoca que Windows PowerShell salga inmediatamente del bucle. En una construcción Switch que no entra en bucle, la instrucción Break provoca que Windows PowerShell salga del bloque de código Switch.

Una instrucción Break puede incluir una etiqueta que le permita salir de bucles incrustados. Una etiqueta puede especificar cualquier palabra clave de bucle (por ejemplo, Foreach, For o While) en un script. Al usar una etiqueta, la instrucción Break sale del bucle especificado. La instrucción Break sale del bucle especificado, independientemente del bucle en el que esté la instrucción.

En el siguiente ejemplo se muestra cómo usar 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úe como 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 habitual usar la instrucción Break en un bucle en el que se debe cumplir 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 "30 was found in array position $i"

En este ejemplo, la instrucción Foreach itera 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 momento se ejecuta la instrucción Break y se sale del bucle Foreach.

Puede salir del resto de las instrucciones de bucles de la misma manera que sale del bucle Foreach. En el siguiente ejemplo, la instrucción Break sale de una instrucción While cuando se captura 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, Windows PowerShell sale del bucle con la etiqueta 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):

        :myLabel while (<condition>) { <statement list>}

La etiqueta son dos puntos seguidos de un nombre asignado. La etiqueta debe ser el primer token de una instrucción y debe ir seguida de la palabra clave de bucle, como While.

En Windows PowerShell solo pueden tener etiquetas las palabras clave de bucle, como Foreach, For y While.

Break retira la ejecución del bucle que contiene la etiqueta. En los bucles incrustados se produce un resultado diferente que el que se produce con la palabra clave Break cuando se usa por sí misma. Este ejemplo esquemático 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 se omite hasta la instrucción después del bucle con la etiqueta. En el ejemplo, la ejecución se vuelve a iniciar con la instrucción "$a = $c".

Puede anidar muchos bucles con etiqueta, como se muestra en el siguiente ejemplo esquemático.

        :red while (<condition1>)
        {
            :yellow while (<condition2>)
            {
                while (<condition3>)
                {
                    if ($a) {break}
                    if ($b) {break red}
                    if ($c) {break yellow}
                }
                # After innermost loop
            }
                # After \"yellow\" loop
        }
                # 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 "red". Si la variable $c se evalúa como True, la ejecución del control de script se reanuda después del bucle etiquetado como "yellow".

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.

Windows PowerShell no limita la distancia a la que las etiquetas pueden reanudar la ejecución. La etiqueta incluso puede pasar el control por los límites de llamadas de función y de scripts.

La palabra clave Break se usa para salir de la construcción Switch. Por ejemplo, la siguiente instrucción Switch usa 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, se crea la variable $var y se inicializa con un valor de cadena de "word2". La instrucción Switch usa la clase Regex para que el valor de la variable coincida primero con el término "word2" (la clase Regex es una clase de expresión regular de Microsoft .NET Framework). Como el valor de la variable y la primera prueba de la instrucción Switch coinciden, se ejecuta el primer bloque de código en la instrucción Switch.

Cuando Windows PowerShell llega a la primera instrucción Break, la instrucción Switch sale. Si se quitan las cuatro instrucciones Break del ejemplo, se cumplen 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_Operato

about_Continue

about_For

about_Foreach

about_Switch

about_Throw

about_Trap

about_Try_Catch_Finally

about_While