2010-03-08 196 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