Em programação ou script, o loop é um dos conceitos mais básicos e poderosos. Um loop está realizando certas tarefas até que as condições especificadas sejam atendidas. Cada linguagem de programação ou script tem maneiras diferentes de implementar o conceito.
Neste guia, verifique o loop aninhado no script bash.
Loop aninhado
Um loop, por definição, está realizando certas 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 outro.
Esta é a estrutura básica de um loop.
while (condição)# alguma coisa
Aqui, o loop while continuará executando as tarefas declaradas dentro do bloco enquanto a condição for atendida. No caso de um loop while aninhado, a estrutura seria semelhante a esta.
# loop principalwhile (condição)
# loop aninhado
while (condição)
# alguma coisa
Em teoria, os loops aninhados podem ir a profundidades infinitas. Em muitas situações, loops aninhados podem ser a solução perfeita.
Loop no script bash
Bash é uma linguagem de script poderosa. Existem diferentes estruturas de loop no bash. Os mais populares são os loops for, while e until. Se você está familiarizado com a programação C / C ++ antes, então a sintaxe certamente será bastante semelhante.
Para loops
For loop é uma das saídas de formulários mais comuns e versáteis, etc. A estrutura dos loops no script bash. A estrutura também se assemelha muito ao loop em C / C ++.
A estrutura do loop for no bash é a seguinte.
for ((inicializar; condição; incremento)); Faz# alguma coisa
feito
A estrutura é muito autoexplicativa. A seção de inicialização não é obrigatória. No entanto, a condição e o incremento têm maior prioridade.
Vamos colocá-lo em ação. Aqui está um script bash muito simplista que implementa o loop for.
para ((i = 0; i < 5 ; i++)); doecho "olá mundo"
feito
Também é possível usar 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 é mais ou menos assim.
para o item em- ; Faz
- Loop infinito Bash
- Entrada do usuário do script Bash
- Matriz de retorno de função Bash
# alguma coisa
feito
Por exemplo, o script a seguir imprimirá "hello world" cinco vezes.
para i em 1… 5; Fazecho "olá mundo"
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 / *; Fazecho $ i
feito
Agora, o que fazemos para ter um loop for aninhado? É apenas um loop for dentro do outro. Aqui está um loop for aninhado usando o exemplo anterior.
para ((i = 0; i < 3 ; i++)); dopara ((j = 0; j < 2 ; j++)); do
echo "olá mundo"
feito
feito
A saída será “hello world” 6 vezes. O loop externo será executado três vezes, executando o loop interno duas vezes.
Loops while
O loop while é outro loop popular e intuitivo disponível no script bash. A sintaxe é parecida com esta.
enquanto# alguma coisa
feito
No exemplo a seguir, o script imprimirá "hello world" cinco vezes.
num = 1enquanto [$ num -le 5]; Faz
echo "olá mundo"
num = $ (($ num + 1))
feito
Qual seria a aparência de ter um loop while aninhado? Aqui está um exemplo simples.
num_a = 1num_b = 1
enquanto [$ num_a -le 5]; Faz
enquanto [$ num_b -le 5]; Faz
echo "olá mundo"
num_b = $ (($ num_b + 1))
feito
num_a = $ (($ num_a + 1))
feito
Até loops
Se você tem experiência em programação em C / C ++, então está familiarizado com o loop do-while. Infelizmente, o bash não tem nada parecido com isso. No entanto, até que o loop opere de maneira semelhante. A sintaxe também parece a mesma.
até [# alguma coisa
feito
A diferença entre o while e até o loop é a condição de teste. Enquanto a condição de teste for verdadeira, um loop while continuará em execução. Um loop até, no entanto, continuará em execução apenas se a condição for falsa.
Aqui está um exemplo rápido do loop while. Vai imprimir a tabuada de 2.
num_a = 1até [$ num_a -gt 10]; Faz
echo $ (($ num_a * 2))
num_a = $ (($ num_a + 1))
feito
Loop break
Em certas situações, se certas condições forem atendidas, a execução do resto do loop torna-se redundante. As quebras de loop são um recurso interessante que permite interromper o loop em uma determinada condição. É mais importante para loops aninhados quanto mais altos os loops, mais consumo de recursos e ineficiência.
Aqui, o seguinte loop for irá parar de executar assim que atingir a condição.
para ((i = 1; i<=100;i++)); doecho $ i
se [$ i -eq 10]; então
pausa
fi
feito
Confira como quebrar o loop while para obter uma explicação detalhada e demonstração de quebras de loop.
Pensamentos finais
Um loop aninhado é um conceito simples e poderoso para entender e implementar. Esperançosamente, este guia foi capaz de descrever e demonstrar o conceito.
Interessado em mais guias de script bash? Confira os seguintes guias.
Computação feliz!