PDA

View Full Version : [bash] iterare su file con spazi


cionci
17-02-2008, 11:50
Mi sono trovato davanti ad un problemino.

#!/bin/sh

for i in `ls -b $1`;
do
echo $i
done

Se mi trovo davanti a file con spazi l'assegnazione a $i del nome del file non funziona e si ferma al carattere di escape che introduce il primo spazio.
Come posso fare ?

Rubberick
17-02-2008, 13:07
hai provato a mettere il filename tra quotes?

altrimenti mi sa che un analisi con una regex e' l'unica via

cionci
17-02-2008, 14:41
Il problema non č nell'echo, ma proprio nell'assegnazione a $i fatta nel for.

Manbearpig
17-02-2008, 16:39
Cosi' dovrebbe andare...

#!/bin/sh
IFS=$'\n'
for i in `ls -b $1 `;
do
echo $i
done

cionci
17-02-2008, 17:09
Non mi funziona ancora. Mi manda a capo ogni volta che trova una n.
Se provo a rimuovere la n mi va a capo (una iterazione in pių) ogni volta che trova uno spazio.

Manbearpig
17-02-2008, 17:56
strano a me funziona... cmq ha a che fare con quella variabile li, prova magari qualche variazione IFS=\n o IFS="\n" o \\n boh! :D