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