2010-03-08 6 views
2

J'ai une boucle que je voudrais courir en bash comme:Comment utiliser un tuyau dans un foreach

for i in user_* do; cat $i | ./fetch_contact.php ; done; 

donne toujours une erreur comme

-bash: erreur de syntaxe près inattendue Je suppose que cela a quelque chose à voir avec le tuyau, mais rien que j'essaie d'ajouter (parenthèse, etc.) n'emballe le tuyau suffisamment. Comment utilisez-vous un tuyau dans une commande comme celle-ci?

Répondre

4

Dans Bash, do is a command. En outre, il est for pas foreach. Voici le correctif:

for i in user_*; do cat $i | ./fetch_contact.php; done; 
0

foreach i in user_*; do cat $i | ./fetch_contact.php ; done;

Semicolon devrait aller avant do, et non après.

1

Il s'avère obtenir les points-virgules et tout le reste à droite rend tout ce truc de tuyau discutable.

for i in user_*; do cat $i | ./fetch_contact.php; done; 
1

Pourquoi boucler?

cat user_* | ./fetch_contact.php
+0

Parce que ce concaténer tous les fichiers avant de les nourrir au script, qui peut ne pas être ce que l'OP veut. –

+0

Si l'OP l'exécute comme ce qu'il a posté dans ses questions, que de tout écrire en php est équivalent à utiliser pour la boucle. – ghostdog74

0

Pas besoin de cat:

for i in user_* ; do ./fetch_contact.php < "$i" ; done 
0

est ici un avec quelques vérifications

for file in user_* 
do 
    if [ -f "$file" ];then 
    ./fetch_contact.php < "$file" 
    fi 
done 
Questions connexes