Compartilhar via


about_Break

TÓPICO
    about_Break

DESCRIÇÃO RESUMIDA
    Descreve uma instrução que você pode usar para fechar imediatamente 
    instruções Foreach, For, While, Do ou Switch.


DESCRIÇÃO LONGA
    Quando uma instrução Break aparece em um loop, como um loop 
    Foreach, For, Switch ou While, essa instrução faz o Windows 
    PowerShell sair do loop imediatamente. Em uma construção Switch 
    que não executa um loop, Break faz o Windows PowerShell sair do 
    bloco de códigos Switch.
 
 
    Uma instrução Break pode incluir um rótulo que permite sair de loops 
    incorporados. Um rótulo pode especificar qualquer palavra-chave de 
    loop, como Foreach, For ou While, em um script. Quando você usa um 
    rótulo, Break sai do loop especificado. Break sai do loop especificado, 
    independentemente do loop em que a instrução Break está.


    O exemplo a seguir mostra como usar uma instrução Break para sair 
    de uma instrução For:


        for($i=1; $i -le 10; $i++)
        {
            Write-Host $i
            break
        }


    Nesse exemplo, a instrução Break sai do loop For quando a 
    variável $i é igual a 1. Embora a instrução For seja avaliada 
    como True enquanto $i é maior do que 10, o Windows PowerShell 
    alcança a instrução Break na primeira vez em que o loop For é 
    executado. 

    É mais comum usar a instrução Break em um loop no qual uma 
    condição interna precisa ser atendida. Observe este exemplo de 
    instrução Foreach:


        $i=0
        $varB = 10,20,30,40
        foreach ($val in $varB)
        {  
            $i++
            if ($val -eq 30)
            {
                break
            }  
        }
        Write-Host "30 foi encontrado na posição de matriz $i"


    Nesse exemplo, a instrução Foreach itera a matriz $varB. Sempre 
    que o bloco de código é executado, a variável $i é incrementada 
    em 1. A instrução If é avaliada como False nas duas primeiras 
    vezes que o loop é executado. Na terceira execução do loop, $i é 
    igual a 3 e a variável $val é igual a 30. Nesse momento, a 
    instrução Break é executada e o loop Foreach é fechado.


    Você encerra outras instruções em loop da mesma maneira que 
    encerra o loop Foreach. No exemplo a seguir, a instrução Break 
    sai de uma instrução While quando uma exceção DivideByZeroException é 
    capturada pela instrução Trap.


        $i = 3
        while ($true)
        {
            trap [DivideByZeroException] 
            {
                Write-Host "divisão por zero capturada" 
                break
            }
            1 / $i--
        }


    Uma instrução Break pode incluir um rótulo. Se você usar a 
    palavra-chave Break com um rótulo, o Windows PowerShell sairá do loop 
    rotulado em vez de encerrar o loop atual. A sintaxe de um rótulo é a 
    seguinte (este exemplo mostra um rótulo em um loop While):


        :myLabel while (<condição>) { <lista de instruções>}


    O rótulo é representado pelo sinal de dois-pontos seguido de um nome 
    atribuído por você. O rótulo deve ser o primeiro token de uma 
    instrução e deve ser seguido pela palavra-chave do loop, como While.
 

    No Windows PowerShell, somente palavras-chave de loop, como 
    Foreach, For e While podem ter um rótulo.


    Break move a execução para fora do loop rotulado. Em loops 
    incorporados, esse resultado é diferente do que ocorre quando a 
    palavra-chave Break é usada sozinha. Este exemplo esquemático tem uma 
    instrução While com uma instrução For:
 

        :myLabel while (<condição 1>) 
        {
            for ($item in $items) 
            { 
                if (<condição 2>) { break myLabel } 
                $item = $x  # Uma instrução dentro do loop For 
        }
        }
        $a = $c  # Uma instrução após o loop rotulado While


    Se a condição 2 for avaliada como True, a execução do script 
    avançará para a instrução depois do loop rotulado. No exemplo, a 
    execução começa novamente com a instrução "$a = $c". 


    Você pode aninhar muitos loops rotulados, conforme mostrado no exemplo 
    esquemático a seguir.


        :vermelho while (<condição1>)
        {
            :amarelo while (<condição2>)
            {
                while (<condição3>)
                {
                    if ($a) {break}
                    if ($b) {break vermelho}
                    if ($c) {break amarelo}
                }
                # Após loop mais interno
            }
                # Após loop \\"amarelo\\"
        }
                # Após loop \\"vermelho\\"


    Se a variável $b for avaliada como True, a execução do script continua 
    depois do loop rotulado como "vermelho". Se a variável $c for 
    avaliada como True, a execução do controle do script continua depois 
    do loop rotulado como "amarelo".


    Se a variável $a for avaliada como True, a execução continua 
    depois do loop mais interno. Nenhum rótulo é necessário.


    O Windows PowerShell não limita até onde os rótulos podem continuar a 
    execução. O rótulo pode até mesmo passar o controle para além dos 
    limites de chamada de script e função.


    A palavra-chave Break é usada para sair da construção Switch. Por 
    exemplo, a instrução Switch a seguir usa instruções Break para 
    verificar a condição mais específica:


        $var = "palavra2"
        switch -regex ($var) 
        {
            "palavra2" 
            {
                Write-Host "Exato" $_ 
                break
            } 

            "palavra.*" 
            { 
                Write-Host "Ocorrência no prefixo" $_ 
                break
            }

            "p.*"
            {
                Write-Host "Ocorrência pelo menos na primeira letra" $_
                break 
            }
            
            default
            {
                Write-Host "Nenhuma ocorrência" $_
                break
            }
        }


    Nesse exemplo, a variável $var é criada e inicializada como um 
    valor de cadeia de caracteres igual a "palavra2". A instrução 
    Switch usa a classe Regex para comparar o valor da variável 
    primeiro com o termo "palavra2". (A classe Regex é uma classe de 
    expressão regular do Microsoft .NET Framework.) Como o valor da 
    variável e o primeiro teste da instrução Switch coincidem, o 
    primeiro bloco de código da instrução Switch é executado.


    Quando o Windows PowerShell alcança a primeira instrução Break, a 
    instrução Switch é fechada. Se as quatro instruções Break forem 
    removidas do exemplo, todas as quatro condições serão atendidas. Esse 
    exemplo usa a instrução Break para exibir resultados quando a 
    condição mais específica é atendida. 


CONSULTE TAMBÉM  
    about_Comparison_Operators
    about_For
    about_Foreach 
    about_Switch
    about_While