Android

Bash para loop

Shell Scripting - For Loops

Shell Scripting - For Loops

Índice:

Anonim

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. done indica 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 shell done indica 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ça