【发布时间】:2010-03-08 23:21:23
【问题描述】:
我想在 bash 中运行一个 for 循环,例如:
for i in user_* do; cat $i | ./fetch_contact.php ; done;
总是给出类似的错误
-bash:意外标记“完成”附近的语法错误
我认为它与管道有关,但我尝试添加的任何内容(括号等)都没有充分包裹管道。如何在这样的命令中使用管道?
【问题讨论】:
标签: bash
我想在 bash 中运行一个 for 循环,例如:
for i in user_* do; cat $i | ./fetch_contact.php ; done;
总是给出类似的错误
-bash:意外标记“完成”附近的语法错误
我认为它与管道有关,但我尝试添加的任何内容(括号等)都没有充分包裹管道。如何在这样的命令中使用管道?
【问题讨论】:
标签: bash
在 Bash 中,do is a command。此外,它是for 而不是foreach。这是修复:
for i in user_*; do cat $i | ./fetch_contact.php; done;
【讨论】:
事实证明,正确使用分号和其他所有内容会使整个管道问题变得毫无意义。
for i in user_*; do cat $i | ./fetch_contact.php; done;
【讨论】:
为什么要循环?
cat user_* | ./fetch_contact.php
【讨论】:
foreach i in user_*; do cat $i | ./fetch_contact.php ; done;
分号应该放在do 之前,而不是之后。
【讨论】:
不需要cat:
for i in user_* ; do ./fetch_contact.php < "$i" ; done
【讨论】:
这里有一些检查
for file in user_*
do
if [ -f "$file" ];then
./fetch_contact.php < "$file"
fi
done
【讨论】: