Ogni tanto mi capita di vedere degli script in BASH che riportano un errore concettuale. Si vuole usare un ciclo for, però lo si trasforma in una semplice istruzione che viene eseguita una sola volta. Per esempio: for i in "$var" do <azione> done L'errore sono le virgolette " " che sono messe in modo errato, in gergo tecnico è chiamato quoting, in questo caso debole o parziale. Infatti, in questo modo si dice che alla variabile $i deve essere attribuito il valore $var nella sua interezza, cioè il ciclo for non dividerà la variabile in base agli spazi, o alle newline, in esso contenuti. Ma sarà attribuito il valore $var per intero alla variabile $i in una sola volta. In questo modo verrà cancellato il significato di "ciclo". Faccio un esempio pratico reale in modo da essere più semplice da capire: valore1="Io uso Ubuntu feisty" for i in "$valore1" do echo valore=$i n=$((n+1)) echo ciclo numero $n done Testatelo con è senza virgolette vedrete la differenza.
Anche il seguente caso è errato: for i in "$@" ;do <azione> done Questo ciclo for vorrebbe usare i parametri di posizionali dichiarati all'avvio di uno script. Meglio altre strade: for arg ;do echo $arg done Oppure: while [ $# -gt 0 ] ;do echo $1 shift done