Introduzione al 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
La struttura di base in Bash è simile:
for x in 1 2 3do echo $x done
1
2
3
Bash ha un modo pratico per creare un intervallo numerico chiamato "brace expansion":
{START..STOP..INCREMENT}for x in {1..5..2}do echo $x done
1
3
5
Un altro modo comune di scrivere i FOR è la sintassi "a tre espressioni".
x=2)x<=4)x+=2)
for ((x=2;x<=4;x+=2))
do
echo $x
done
2
4
Bash permette anche le espansioni con pattern in un ciclo for usando il simbolo *, ad esempio per i file in una directory.
Per esempio, supponi ci siano due documenti di testo nella cartella /books:
for book in books/*
do
echo $book
done
books/book1.txt
books/book2.txt
Ricordi come creare una shell nella shell con la notazione $()?
Puoi richiamarla direttamente in un ciclo for!
Supponiamo una struttura di cartelle così:

Possiamo ciclare sul risultato di una chiamata shell-nella-shell:
for book in $(ls books/ | grep -i 'air')do echo $book done
AirportBook.txt
FairMarketBook.txt
Simile a un ciclo FOR, ma imposti una condizione verificata a ogni iterazione.
Le iterazioni continuano finché la condizione è vera!
while invece di for-le)&& (AND) o || (OR)Ecco un esempio semplice:
x=1while [ $x -le 3 ];do echo $x ((x+=1)) done
1
2
3
Attenzione al ciclo WHILE infinito, se la condizione di uscita non si verifica mai.
x=1
while [ $x -le 3 ];
do
echo $x
# non incrementare x. Non arriverà mai a 3!
# ((x+=1))
done
Questo stamperà 1 all'infinito!
Introduzione al Bash Scripting