2010-11-15 8 views
1

D'une certaine manière dans le script suivant, la valeur de $i
n'est pas développée sur la ligne 3. Une idée pourquoi?Shell: imbriqué pour la boucle

for i in `cat test.txt` 
do 
     for j in `find . -name $i` 
     do 
       echo $j 
     done 
done 
+0

Quel est le message d'erreur? –

+0

@ dharm0us - ce qu'il y a dans "test.txt"? Si find ne renvoie aucune correspondance, il suffit de l'indiquer 'for 'dans' find. -name "* $ i *" ' – ajreal

+0

@ dharm0us: Etes-vous sûr que le problème est l'expansion? Je l'ai essayé et cela a fonctionné correctement. Mettez ce script dans un fichier et ajoutez '#!/Bin/bash -x' en haut pour voir ce qui se passe. –

Répondre

0
for i in `cat test.txt | sed -e "s/\r//g"`; do find -name $i; done 

grande question: soutien Cygwin sed?

ou cygwin

d2u test.txt; for i in `cat test.txt`; do find -name $i; done 

ou linux

dos2unix test.txt; for i in `cat test.txt`; do find -name $i; done 
2

Après avoir corrigé les fins de ligne:

xargs --arg-file test.text -I % find . -name "%" 

Pas besoin de boucles imbriquées.