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.
Computação feliz!