Laço For
Parte da seção Fundamentos do Journey de Terminal da Coddy — lição 71 de 82.
Às vezes, você precisa repetir uma ação várias vezes. Em vez de escrever o mesmo comando repetidamente, você pode usar um laço for para iterar através de uma lista de itens e realizar uma ação em cada um.
Aqui está a estrutura básica de um loop for no Bash:
#!/bin/bash
for name in Alice Bob Charlie; do
echo "Hello, $name!"
doneEste script exibe uma saudação para cada nome na lista. A variável name assume cada valor por sua vez: primeiro "Alice", depois "Bob", depois "Charlie". A palavra-chave do marca o início do corpo do loop, e done o encerra.
Loops for são especialmente poderosos quando combinados com wildcards. Você pode percorrer todos os arquivos em um diretório:
#!/bin/bash
for file in *.txt; do
echo "Processing $file"
doneIsso itera através de todos os arquivos .txt no diretório atual. Em cada iteração, a variável file contém o nome do arquivo atual, permitindo que você realize operações em cada arquivo automaticamente.
Você também pode percorrer um intervalo de números usando expansão de chaves:
#!/bin/bash
for i in {1..5}; do
echo "Number: $i"
doneIsso imprime os números de 1 a 5. Laços for transformam tarefas repetitivas em apenas algumas linhas de código, tornando seus scripts mais eficientes e fáceis de manter.
Desafio
FácilCrie um script shell chamado countdown.sh que usa um loop for para imprimir uma contagem regressiva de 5 a 1.
Seu script deve:
- Comece com a linha shebang (
#!/bin/bash) - Use um loop for com expansão de chaves para iterar pelos números de 5 até 1
- Imprima cada número em sua própria linha no formato:
Countdown: [number]
Torne o script executável e execute-o. Sua saída deve ser:
Countdown: 5
Countdown: 4
Countdown: 3
Countdown: 2
Countdown: 1Dica: Use
{5..1}para criar um intervalo descendente. Dentro do loop, useecho "Countdown: $i"ondeié sua variável de loop.
Folha de consulta
Um for permite que você itere por uma lista de itens e execute uma ação em cada um.
Sintaxe básica:
for variable in list; do
# commands
donePercorrer uma lista de valores:
for name in Alice Bob Charlie; do
echo "Hello, $name!"
donePercorrer arquivos usando curingas:
for file in *.txt; do
echo "Processing $file"
donePercorrer um intervalo de números usando expansão de chaves:
for i in {1..5}; do
echo "Number: $i"
donePara intervalos decrescentes, inverta a ordem:
for i in {5..1}; do
echo "Number: $i"
doneExperimente você mesmo
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Diretórios
Criar um DiretórioCopiar um DiretórioMover e Renomear um DiretórioExcluir um DiretórioResumo - Operações com Diretórios7Conteúdo do Arquivo
Head e TailContagem de PalavrasComando SortComando UniqGrep BásicoGrep com FlagsResumo - Detetive de Texto10Projeto Analisador de Log
Visão Geral do ProjetoVisualizando o Arquivo de Log13Fundamentos de Shell Scripting
O Que É Um Script de ShellCriar e Executar um ScriptVariáveis em ScriptsEntrada do Usuário em ScriptsInstrução IfLaço ForLaço WhileResumo - Adivinhador de Números2Navegação
Imprimir Diretório de TrabalhoListar ArquivosMudar DiretórioCaminhos Absolutos vs RelativosDiretório Home e RaizResumo - Encontre Seu Caminho8Redirecionamento
Saída PadrãoSobrescrever em um ArquivoAnexar a um ArquivoEntrada PadrãoErro PadrãoRecapitulação - Construtor de Log3Arquivos
Criar um ArquivoLer um ArquivoCopiar um ArquivoMover e Renomear um ArquivoExcluir um ArquivoResumo - Operações com Arquivos6Curingas e Padrões
O Curinga AsteriscoO Curinga InterrogaçãoCuringas de ColchetesCombinando CuringasResumo - Operações Seletivas9Pipes
O Que é um PipeEncadeando Dois ComandosEncadeando Múltiplos ComandosPipe com GrepResumo - Pipeline de Dados