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