Bóson Treinamentos em Ciência e Tecnologia

Shell Scripting – Declaração break em loops aninhados

Declaração break em loops aninhados - Shell Script

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,

 

Sair da versão mobile