Unix / Linux - Shell Loop Control

Neste capítulo, discutiremos o controle de loop de shell no Unix. Até agora, você examinou a criação de loops e o trabalho com loops para realizar diferentes tarefas. Às vezes, você precisa interromper um loop ou pular iterações do loop.

Neste capítulo, aprenderemos a seguir duas instruções que são usadas para controlar loops de shell -

  • o break declaração

  • o continue declaração

O loop infinito

Todos os loops têm uma vida limitada e eles surgem quando a condição é falsa ou verdadeira, dependendo do loop.

Um loop pode continuar para sempre se a condição necessária não for atendida. Um loop que é executado para sempre sem terminar é executado um número infinito de vezes. Por esse motivo, esses loops são chamados de loops infinitos.

Exemplo

Aqui está um exemplo simples que usa o while loop para exibir os números de zero a nove -

#!/bin/sh

a=10

until [ $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done

Este loop continua para sempre porque a é sempre greater than ou equal to 10 e nunca é inferior a 10.

A declaração de quebra

o breakinstrução é usada para encerrar a execução de todo o loop, após completar a execução de todas as linhas de código até a instrução break. Em seguida, ele desce para o código após o final do loop.

Sintaxe

Os seguintes break declaração é usada para sair de um loop -

break

O comando break também pode ser usado para sair de um loop aninhado usando este formato -

break n

Aqui n especifica o nth loop envolvente para a saída.

Exemplo

Aqui está um exemplo simples que mostra que o loop termina assim que a torna-se 5 -

#!/bin/sh

a=0

while [ $a -lt 10 ]
do
   echo $a
   if [ $a -eq 5 ]
   then
      break
   fi
   a=`expr $a + 1`
done

Após a execução, você receberá o seguinte resultado -

0
1
2
3
4
5

Aqui está um exemplo simples de loop for aninhado. Este script sai de ambos os loops sevar1 equals 2 e var2 equals 0 -

#!/bin/sh

for var1 in 1 2 3
do
   for var2 in 0 5
   do
      if [ $var1 -eq 2 -a $var2 -eq 0 ]
      then
         break 2
      else
         echo "$var1 $var2"
      fi
   done
done

Após a execução, você receberá o seguinte resultado. No loop interno, você tem um comando break com o argumento 2. Isso indica que, se uma condição for atendida, você deve interromper o loop externo e, por fim, também o loop interno.

1 0
1 5

A declaração continue

o continue declaração é semelhante ao break , exceto que faz com que a iteração atual do loop saia, em vez de todo o loop.

Esta instrução é útil quando ocorre um erro, mas você deseja tentar executar a próxima iteração do loop.

Sintaxe

continue

Como com a instrução break, um argumento inteiro pode ser fornecido ao comando continue para pular comandos de loops aninhados.

continue n

Aqui n especifica o nth loop envolvente para continuar.

Exemplo

O seguinte loop faz uso do continue instrução que retorna da instrução continue e começa a processar a próxima instrução -

#!/bin/sh

NUMS="1 2 3 4 5 6 7"

for NUM in $NUMS
do
   Q=`expr $NUM % 2`
   if [ $Q -eq 0 ]
   then
      echo "Number is an even number!!"
      continue
   fi
   echo "Found odd number"
done

Após a execução, você receberá o seguinte resultado -

Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number