30/11/09

Bucle for con nombres de fichero con espacios

A veces intentamos usar un bucle for en bash para recorrer un listado de ficheros, pero si los nombres de los ficheros contienen espacios, se separa el nombre en dos o más trozos, provocando errores. Para evitarlo hay que definir con la variable IFS que caracteres se deben utilizar como delimitadores, ya que por defecto incluye además del salto de linea y retorno de carro, el espacio y el tabulado.

Un ejemplo de como emplearlo:

#!/bin/sh
IFS=$'\x0A'$'\x0D'
for fichero in $(ls *)
do

/usr/bin/HAZALGO $fichero
done

Visto aquí y aquí.

1 comentario:

Anónimo dijo...

Muchas gracias, soy muy novato en bash/unix y llevaba un buen rato intentando hacer esto.