En alguna ocasion podemos querer hacer un bucle con for obteniendo los elementos mediante un cat a un archivo. Si alguna vez hemos intentado hacer esto, nos habremos percatado de que si las lineas del archivo contienen un espacio, el cat va a insertas un espacio separando la línea en tantos elementos como palabras separadas por espacios tiene esa línea. Por ejemplo:
javi@casa:/tmp$ for i in $(cat prueba); do echo $i; done Primera Linea Segunda Linea Tercera Linea
Esto no es lo que esperabamos, ya que mi intención era sacar las lineas una a una, pero completas.
Para hacer un bucle de este tipo sin que se nos separen las líneas de forma que se muestre cada palabra en una diferente, debemos cambiar la aproximación y hacer el bucle de otra forma. De esta manera, podemos hacer el siguiente bucle
javi@casa:/tmp$ while read i; do echo "$i"; done < ./prueba Primera Linea Segunda Linea Tercera Linea
De esta sencilla forma podremos iterar con bucles a lo largo de archivos que contienen palabras separadas por espacios sin que se nos rompan todos los esquemas y formato original del archivo y sus líneas.