$ cat toto  
ceci est une chaine entiere  
celle ci aussi meme avec des espaces 

Le champs séparateur pour le “for”, c’est l’espace:

$ for i in `cat toto`; do echo YOP "$i"; done  
YOP ceci  
YOP est  
YOP une  
YOP chaine  
YOP entiere  
YOP celle  
YOP ci  
YOP aussi  
YOP meme  
YOP avec  
YOP des  
YOP espaces  

Pour faire en sorte que le champs séparateur soit la ligne, on peut passer par “while read”:

$ cat toto | while read i; do echo YOP "$i"; done  
YOP ceci est une chaine entiere  
YOP celle ci aussi meme avec des espaces  
  • Extraits du man:

for nom [ in mot ] ; do liste ; done
La liste de mots à la suite de in est développée, créant une liste d’éléments. La variable nom prend successivement la valeur de chacun des éléments, et liste est exécutée à chaque fois…..

while liste ; do liste ; done
La commande while répète la liste du do tant que la dernière commande de la liste du while renvoie un code de retour nul….

read [-er] [-a nom_a] [-p msg] [nom …]
Une ligne est lue depuis l’entrée standard, puis le premier mot de cette ligne est affecté au premier nom, le second mot au second nom, et ainsi de suite. Les mots restants sont affectés au dernier nom….