Shell Scripting - For Loops
Índice:
- A festança padrão para loop
- Loop sobre cordas
- Loop em um intervalo numérico
- Loop sobre elementos da matriz
- O Bash estilo C para loop
- Quebrar e continuar instruções
- Declaração de quebra
- Declaração Continue
- Exemplos do Bash For Loop
- Renomeando arquivos com espaços no nome do arquivo
- Alterando a extensão do arquivo
- Conclusão
Loops são um dos conceitos fundamentais das linguagens de programação. Os loops são úteis quando você deseja executar uma série de comandos repetidamente até que uma determinada condição seja atingida.
Em linguagens de script como o Bash, os loops são úteis para automatizar tarefas repetitivas.
Existem três construções básicas de loop no script Bash, para loop, enquanto loop e até.
Neste tutorial, abordaremos o básico dos loops for no Bash. Também mostraremos como usar as instruções break e continue para alterar o fluxo de um loop.
A festança padrão para loop
O loop for itera uma lista de itens e executa o conjunto de comandos fornecido.
O loop Bash for assume o seguinte formato:
for item in do done
A lista pode ser uma série de cadeias separadas por espaços, um intervalo de números, a saída de um comando, uma matriz e assim por diante.
Loop sobre cordas
No exemplo abaixo, o loop irá percorrer cada item da lista de strings e o
element
variável será definido como o item atual.
for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done
O loop produzirá a seguinte saída:
Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium
Loop em um intervalo numérico
Você pode usar a expressão de sequência para especificar um intervalo de números ou caracteres, definindo um ponto inicial e final do intervalo. A expressão de sequência assume o seguinte formato:
{START..END}
No exemplo abaixo, o loop irá percorrer todos os números de 0 a 3.
for i in {0..3} do echo "Number: $i" done
Number: 0 Number: 1 Number: 2 Number: 3
A partir do Bash 4, também é possível especificar um incremento ao usar intervalos. A expressão assume a seguinte forma:
{START..END..INCREMENT}
for i in {0..20..5} do echo "Number: $i" done
Number: 0 Number: 5 Number: 10 Number: 15 Number: 20
Loop sobre elementos da matriz
Você também pode usar o loop for para iterar sobre uma matriz de elementos:
No exemplo abaixo, estamos definindo uma matriz
BOOKS
e iterando sobre cada elemento da matriz.
BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS}"; do echo "Book: $book" done
Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby
O Bash estilo C para loop
A sintaxe do loop for do estilo C está no seguinte formato:
for ((INITIALIZATION; TEST; STEP)) do done
A parte
INITIALIZATION
é executada apenas uma vez quando o loop é iniciado. Em seguida, a parte
TEST
é avaliada. Se for falso, o loop for será encerrado. Se o
TEST
for verdadeiro, os comandos dentro do corpo do loop for são executados e a parte
STEP
é atualizada.
No código a seguir, o loop inicia inicializando
i = 0
, antes de cada iteração, verifica se
i ≤ 10
. Se verdadeiro, imprime o valor atual de
i
e
i
em 1 (
i++
), caso contrário, o loop termina.
for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done
O loop iterará 1001 vezes e produzirá a seguinte saída:
Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000
Quebrar e continuar instruções
As instruções break e continue podem ser usadas para controlar a execução do loop for.
Declaração de quebra
A instrução break termina o loop atual e passa o controle do programa para a instrução que segue a instrução terminada. Geralmente é usado para finalizar o loop quando uma determinada condição é atendida.
No exemplo a seguir, estamos usando a instrução if para finalizar a execução do loop quando o item iterado atual for igual a 'Lithium'.
for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'
Element: Hydrogen Element: Helium All Done!
Declaração Continue
A instrução continue sai da iteração atual de um loop e passa o controle do programa para a próxima iteração do loop.
No exemplo a seguir, estamos iterando através de um intervalo de números e, quando o item iterado atual for igual a '2', a instrução continue fará com que a execução retorne ao início do loop e continue com a próxima iteração.
for i in {1..5}; do if]; then continue fi echo "Number: $i" done
Number: 1 Number: 3 Number: 4 Number: 5
Exemplos do Bash For Loop
Renomeando arquivos com espaços no nome do arquivo
O exemplo a seguir mostra como usar o loop Bash for para renomear todos os arquivos no diretório atual com um espaço em seus nomes, substituindo o espaço por sublinhado.
for file in *\ *; do mv "$file" "${file// /_}" done
Vamos dividir o código linha por linha:
- A primeira linha cria um loop for e itera através de uma lista de todos os arquivos com um espaço em seu nome. A expressão
*\ *cria a lista. A segunda linha se aplica a cada item da lista e move o arquivo para um novo, substituindo o espaço por um sublinhado (_). A parte${file// /_}está usando a expansão do parâmetro shell para substituir um padrão dentro de um parâmetro por uma sequência.doneindica o fim do segmento do loop.
Alterando a extensão do arquivo
O exemplo a seguir mostra como usar o loop Bash for para renomear todos os arquivos que terminam com.jpeg no diretório atual, substituindo a extensão do arquivo de.jpeg para.jpg.
for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done
Vamos analisar o código linha por linha:
- A primeira linha cria um loop for e itera através de uma lista de todos os arquivos que terminam com '.jpeg'. A segunda linha se aplica a cada item da lista e move o arquivo para um novo, substituindo '.jpeg' por '.jpg'.
${file%.jpeg}para remover a parte '.jpeg' do nome do arquivo usando o parâmetro de expansão de shelldoneindica o final do segmento de loop.
Conclusão
Até agora você deve ter um bom entendimento de como usar o loop bash para iterar nas listas.
terminal do laço da festançaEMC eleva oferta para Data Domain para US $ 2,1 bilhão A EMC aumentou sua oferta para adquirir o Data Domain, de US $ 1,8 bilhão para US $ 2,1 bilhões de dólares em seu último esforço para empurrar a licitadora original… A EMC aumentou sua oferta para adquirir a Data Domain de US $ 1,8 bilhão para US $ 2,1 bilhões em seu último esforço para empurrar para o lado a NetApp.
Oferta em dinheiro é "claramente superior" à proposta de 1,9 bilhão de dólares da NetApp, que inclui ações e dinheiro, disse o CEO da EMC, Joe Tucci, em uma carta ao conselho da Data Domain divulgada publicamente pela EMC. Em comunicado divulgado na segunda-feira, o CEO da NetApp, Dan Warmenhoven, disse que o conselho da empresa "pesará cuidadosamente suas opções".
Bash até loop
Em linguagens de script como o Bash, os loops são úteis para automatizar tarefas repetitivas. Este tutorial explica o básico do loop até no Bash. O loop até é usado para executar um determinado conjunto de comandos, desde que a condição especificada seja falsa.
Bash while loop
Loops são um dos conceitos fundamentais das linguagens de programação. Os loops são úteis, se você deseja executar uma série de comandos repetidamente. Este tutorial explica os conceitos básicos de loops while no Bash, bem como as instruções break e continue para alterar o fluxo de um loop.







