2010-03-08 3 views
2

У меня есть цикл, я хотел бы работать в Баш, как:Как использовать трубу в Еогеасп заявлении

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

всегда выдает ошибку, как

-bash: ошибка синтаксиса около неожиданной token `done '

Я предполагаю, что это как-то связано с трубой, но я ничего не пытаюсь добавить (скобки и т. д.) достаточно обернуть трубу. Как вы используете канал в такой команде?

ответ

4

В Bash, do is a command. Кроме того, это for не foreach. Вот исправление:

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

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

Запятая должна пойти перед do, а не после.

1

Оказывается получение запятой и все остальное верно делает всю эту трубу вещь спорное.

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

Зачем нужен цикл?

cat user_* | ./fetch_contact.php
+0

Поскольку это объединяющее все файлы перед подачей их в сценарий, который не может быть то, что ОП хочет. –

+0

Если OP работает так, как он писал в своих вопросах, чем считать все сценарии php эквивалентно использованию для цикла. – ghostdog74

0

Нет необходимости в cat:

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

вот один с некоторыми проверки

for file in user_* 
do 
    if [ -f "$file" ];then 
    ./fetch_contact.php < "$file" 
    fi 
done 
Смежные вопросы