Loop aninhado em exemplos de scripts Bash

Loop aninhado em exemplos de scripts Bash

Na programação ou script, o loop é um dos conceitos mais básicos e poderosos. Um loop está executando certas tarefas até que as condições especificadas sejam atendidas. Cada linguagem de programação ou script tem diferentes maneiras de implementar o conceito.

Neste guia, confira o loop aninhado em scripts de bash.

Loop aninhado

Um loop, por definição, está executando determinadas tarefas até que as condições sejam atendidas. E se a tarefa incluir a execução de um loop? Este é o conceito de um loop aninhado. Um loop dentro de um loop.

Esta é a estrutura básica de um loop.

while (condição)
# algo

Aqui, o While Loop continuará executando as tarefas declaradas dentro do bloco, desde que a condição seja cumprida. No caso de um loop aninhado, a estrutura ficaria assim.

# loop principal
while (condição)
# loop aninhado
while (condição)
# algo

Em teoria, os loops aninhados podem ir para a profundidade infinita. Em muitas situações, os loops aninhados podem ser a solução perfeita.

Loop in Bash Script

Bash é uma linguagem de script poderosa. Existem diferentes estruturas de loop na festa. Os mais populares são, enquanto e até os loops. Se você está familiarizado com a programação C/C ++ antes, a sintaxe definitivamente será bastante semelhante.

Para loops

Para Loop é uma das saídas mais comuns e versáteis, etc. A estrutura dos loops em scripts de basquete. A estrutura também se parece com o loop em C/C ++ muito.

A estrutura do loop em Bash é a seguinte.

para ((inicializar; condição; incremento)); fazer
# algo
feito

A estrutura é muito auto-explicativa. A seção de inicialização não é obrigatória. No entanto, a condição e o incremento são uma prioridade mais alta.

Vamos colocar em ação. Aqui está um script bash muito simplista que implementa o loop.

para ((i = 0; i < 5 ; i++)); do
eco "Hello World"
feito

Também é possível usar a lista/intervalo como condição de loop. É especialmente útil se estiver trabalhando com uma lista de arquivos, intervalos de números, matrizes, saídas de comando, etc. A estrutura se parece com isso.

para item em ; fazer
# algo
feito

Por exemplo, o script a seguir imprimirá o “Hello World” cinco vezes.

para i em 1… 5; fazer
eco "Hello World"
feito

E se precisarmos trabalhar com o conteúdo de um diretório? No exemplo a seguir, o script imprimirá todos os arquivos no diretório /usr /bin.

para i em/usr/bin/*; fazer
eco $ i
feito

Agora, o que fazemos para ter um loop aninhado? É apenas um para loop dentro de outro. Aqui está um loop aninhado usando o exemplo anterior.

para ((i = 0; i < 3 ; i++)); do
para ((j = 0; j < 2 ; j++)); do
eco "Hello World"
feito
feito

A saída será "Hello World" 6 vezes. O loop externo será executado três vezes, executando o loop interno duas vezes.

Enquanto loops

O loop while é outro loop popular e intuitivo disponível em scripts de basquete. A sintaxe se parece com isso.

enquanto ; fazer
# algo
feito

No exemplo seguinte, o script imprimirá o “Hello World” cinco vezes.

num = 1
enquanto [$ num -le 5]; fazer
eco "Hello World"
num = $ (($ num+1))
feito

Como seria ter um loop aninhado enquanto? Aqui está um exemplo simples.

num_a = 1
num_b = 1
enquanto [$ num_a -le 5]; fazer
enquanto [$ num_b -le 5]; fazer
eco "Hello World"
num_b = $ (($ num_b+1))
feito
num_a = $ (($ num_a+1))
feito

Até loops

Se você tem um fundo de programação em C/C ++, está familiarizado com o loop do Do-While. Infelizmente, Bash não tem nada assim. No entanto, até o loop operar de maneira semelhante. A sintaxe também parece a mesma.

até [ ]; fazer
# algo
feito

A diferença entre o tempo e até o loop é a condição de teste. Enquanto a condição de teste for verdadeira, um loop de tempo continuará correndo. Um loop até até ficará funcionando apenas se a condição for falsa.

Aqui está um exemplo rápido do while loop. Ele imprimirá a tabela de multiplicação de 2.

num_a = 1
até [$ num_a -gt 10]; fazer
eco $ (($ num_a * 2))
num_a = $ (($ num_a+1))
feito

Quebra de loop

Em certas situações, se certas condições forem atendidas, executar o restante do loop se tornará redundante. As quebras de loop são um recurso interessante que permite sair do loop em uma determinada condição. É mais importante para os loops aninhados, pois quanto maior os loops, mais consumo de recursos e ineficiência.

Aqui, o seguinte para o loop parará de executar assim que atingir a condição.

para ((i = 1; i<=100;i++)); do
eco $ i
se [$ i -eq 10]; então
quebrar
fi
feito

Confira como se quebrar enquanto estiver no loop para obter uma explicação aprofundada e demonstração de quebras de loop.

Pensamentos finais

Um loop aninhado é um conceito simples e poderoso para entender e implementar. Felizmente, este guia foi capaz de descrever e demonstrar o conceito.

Interessado em mais guias de script de bash? Confira os seguintes guias.

  • Loop infinito de bash
  • Entrada do usuário do script de bash
  • Função Bash Retornando Array

Computação feliz!