Introdução ao Bash Scripting
Alex Scriven
Data Scientist
Python:
for x in range(3):
print(x)
0
1
2
R:
for (x in seq(3)){
print(x)
}
[1] 1
[1] 2
[1] 3
A estrutura básica em Bash é parecida:
for x in 1 2 3do echo $x done
1
2
3
O Bash tem um jeito prático de criar intervalos numéricos chamado "brace expansion":
{START..STOP..INCREMENT}for x in {1..5..2}do echo $x done
1
3
5
Outra forma comum de escrever FOR é a sintaxe de "três expressões".
x=2)x<=4)x+=2)
for ((x=2;x<=4;x+=2))
do
echo $x
done
2
4
O Bash também permite expansões por padrão em um laço for usando o símbolo *, como para arquivos em um diretório.
Por exemplo, suponha que haja dois documentos de texto na pasta /books:
for book in books/*
do
echo $book
done
books/book1.txt
books/book2.txt
Lembra de criar um shell-dentro-do-shell usando a notação $()?
Você pode chamar isso direto em um laço for!
Vamos supor uma estrutura de pastas assim:

Podemos iterar sobre o resultado de uma chamada ao shell-dentro-do-shell:
for book in $(ls books/ | grep -i 'air')do echo $book done
AirportBook.txt
FairMarketBook.txt
Parecido com um laço FOR, mas você define uma condição testada a cada iteração.
As iterações continuam até a condição deixar de ser verdadeira!
while em vez de for-le)&& (AND) ou || (OR)Um exemplo simples:
x=1while [ $x -le 3 ];do echo $x ((x+=1)) done
1
2
3
Cuidado com o WHILE infinito, quando a condição de parada nunca é atingida.
x=1
while [ $x -le 3 ];
do
echo $x
# não incremente x. Ele nunca chega a 3!
# ((x+=1))
done
Isso vai imprimir 1 para sempre!
Introdução ao Bash Scripting