96

我尝试在 bash 的 for 循环中运行后台作业:

for i in $(seq 3); do echo $i ; sleep 2 & ; done

我得到错误:

bash: syntax error near unexpected token `;'

在 zsh 中,命令行有效。

4

2 回答 2

148

去除 ; 睡后

for i in $(seq 3); do echo $i ; sleep 2 & done

顺便说一句,这样的循环最好用适当的缩进写在单独的行上(如果你在 shell 脚本文件中写这个)。

for i in $(seq 3)
do
   echo $i
   sleep 2 &
done
于 2012-09-18T08:19:53.340 回答
45

您可以将后台命令放在 ( )

for i in $(seq 3); do echo $i ; (sleep 2 &) ; done
于 2013-05-31T16:56:44.510 回答