Unix / Linux - Tipos de Shell Loop
Neste capítulo, discutiremos os loops de shell no Unix. Um loop é uma ferramenta de programação poderosa que permite executar um conjunto de comandos repetidamente. Neste capítulo, examinaremos os seguintes tipos de loops disponíveis para programadores de shell -
Você usará diferentes loops com base na situação. Por exemplo, owhileo loop executa os comandos fornecidos até que a condição fornecida permaneça verdadeira; auntil o loop é executado até que uma determinada condição se torne verdadeira.
Depois de ter uma boa prática de programação, você ganhará a experiência e, portanto, começará a usar o loop apropriado com base na situação. Aqui,while e for loops estão disponíveis na maioria das outras linguagens de programação, como C, C++ e PERLetc.
Loops de aninhamento
Todos os loops suportam o conceito de aninhamento, o que significa que você pode colocar um loop dentro de outro semelhante ou em diferentes loops. Esse aninhamento pode ir até um número ilimitado de vezes com base em sua necessidade.
Aqui está um exemplo de aninhamento whileciclo. Os outros loops podem ser aninhados com base nos requisitos de programação de forma semelhante -
Aninhando enquanto Loops
É possível usar um loop while como parte do corpo de outro loop while.
Sintaxe
while command1 ; # this is loop1, the outer loop
do
Statement(s) to be executed if command1 is true
while command2 ; # this is loop2, the inner loop
do
Statement(s) to be executed if command2 is true
done
Statement(s) to be executed if command1 is true
done
Exemplo
Aqui está um exemplo simples de aninhamento de loop. Vamos adicionar outro loop de contagem regressiva dentro do loop que você costumava contar até nove -
#!/bin/sh
a=0
while [ "$a" -lt 10 ] # this is loop1
do
b="$a"
while [ "$b" -ge 0 ] # this is loop2
do
echo -n "$b "
b=`expr $b - 1`
done
echo
a=`expr $a + 1`
done
Isso produzirá o seguinte resultado. É importante observar comoecho -nfunciona aqui. Aqui-n opção permite que o eco evite imprimir um novo caractere de linha.
0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0