2010-03-08 41 views
2

我有一个循环,我想在诸如bash运行使用管道:如何在foreach语句

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

总是给喜欢

-bash错误:近意外的语法错误令牌'完成'

我认为它与管道有关,但是我没有尝试添加(括号等)来充分包裹管道。你如何在这样的命令中使用管道?

回答

4

在Bash中,do is a command。另外,它不是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

因为这样可以将所有的文件,并将这些资料传送到脚本之前,这可能不是什么OP想。 – 2010-03-08 23:57:55

+0

如果OP运行它,就像他在他的问题中发布的内容一样,而不是将所有内容都用于php脚本,就相当于使用for循环。 – ghostdog74 2010-03-09 00:21:28

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