Bash 循环后台作业

Bash 循环后台作业,bash,Bash,我尝试在bash中的for循环中运行后台作业: for i in $(seq 3); do echo $i ; sleep 2 & ; done 我得到一个错误: bash: syntax error near unexpected token `;' 在zsh中,命令行起作用。删除;睡后 for i in $(seq 3); do echo $i ; sleep 2 & done 顺便说一句,这样的循环最好用适当的缩进写在单独的行上(如果您是在shell脚本文件中编写的话

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

for i in $(seq 3); do echo $i ; sleep 2 & ; done
我得到一个错误:

bash: syntax error near unexpected token `;'

在zsh中,命令行起作用。

删除;睡后

for i in $(seq 3); do echo $i ; sleep 2 & done
顺便说一句,这样的循环最好用适当的缩进写在单独的行上(如果您是在shell脚本文件中编写的话)


您可以将background命令放入()


你想在背景中放置哪一位?正如上面所说,你试图在后台进行睡眠,这是毫无意义的。睡眠只是在实际情况发生之前测试我的循环。请记住,它只会将“睡眠2”发送到后台。为什么我在background命令中使用
$I
执行此操作时,作业控制表示进程名称包含
$i
,而不是
$i
的实际值是多少?@Michael Full program with output有助于更好地理解
中的i;do rm-fr$I&done
<代码>作业->
rm-fr$I
多次,而不是删除每个作业的实际目录我对此有答案,它很长。所以我认为你应该把它作为一个新的问题发布(并在这里添加这个问题链接),我会回答,你也会得到更多的回答。请注意:你通过它创建了一个子shell。这也意味着您将无法等待后台作业结束。
for i in $(seq 3)
do
   echo $i
   sleep 2 &
done
for i in $(seq 3); do echo $i ; (sleep 2 &) ; done