Shell Scripting – Declaração break em loops aninhados

Declaração break em loops aninhados - Shell Scripting

Na lição passada vimos o funcionamento e aplicação da declaração break em scripts do shell. Neste tutorial vamos trabalhar com a declaração break em loops aninhados, mostrando como utilizá-la para escolher qual loop interromper.

Às vezes, em um algoritmo que possui loops aninhados,  precisamos interromper a execução do loop mais externo de acordo com uma condição que ocorre no loop interno (aninhado). Para isso, podemos usar o comando break de acordo com a seguinte sintaxe:

break n

onde o valor n indica o nível do loop que será interrompido. Por padrão, esse valor é 1, o que significa que o loop interrompido é o loop onde a instrução break se encontra. Se ajustarmos o valor de n para, por exemplo, 2, o comando break irá interromper a execução do próximo nível, que corresponde ao loop externo em relação ao atual, e assim sucessivamente para estruturas de repetição aninhadas mais complexas.

Vejamos dois exemplos.

Exemplo 01: Encerrando o loop interno (usando laços for).

Neste exemplo o comando break termina o loop interno quando o valor da variável y é igual a 12, mas o loop externo continua a ser executado (5 vezes):

#!/bin/bash
# Saindo de um loop interno

for (( x = 1; x <= 5; x++ ))
do
   echo "Valor do loop externo: $x"
   for (( y = 1; y < 20; y++ ))
   do
      if [ $y -eq 12 ]
      then
         break
      fi
      echo "Valor no loop interno: $y"
   done
done

Exemplo 02: Encerrando o loop externo. 

Neste exemplo, o loop mais externo (nível 2) é interrompido quando, no loop mais interno (nível 1) o valor da variável y se torna maior do que 9:

#!/bin/bash
# Saindo de um loop externo

for (( x = 1; x < 5; x++ ))
do
   echo "Valor do loop externo: $x"
   for (( y = 1; y < 20; y++ ))
   do
      if [ $y -gt 9 ]
      then
         break 2
      fi
      echo "Valor no loop interno: $y"
   done
done

É isso aí! Na próxima lição vamos tratar do comando continue, que permite interromper a execução de comandos dentro de um loop prematuramente sem no entanto finalizar o loop em si completamente,

 

Sobre Fábio dos Reis (1262 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*