如何在foreach语句中使用管道

时间:2010-03-08 23:21:23

标签: bash

我有一个for循环我想在bash中运行,如:

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

总是给出错误,如

-bash:意外令牌“完成”附近的语法错误

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

6 个答案:

答案 0 :(得分:4)

在Bash,do is a command。此外,它是for而不是foreach。这是修复:

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

答案 1 :(得分:1)

结果得到分号和其他一切正确使整个管道事情没有实际意义。

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

答案 2 :(得分:1)

为什么要循环?

cat user_* | ./fetch_contact.php

答案 3 :(得分:0)

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

分号应该在do之前,而不是之后。

答案 4 :(得分:0)

无需cat

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

答案 5 :(得分:0)

这里有一些检查

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