循环背景工作

bou*_*gui 73 bash

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

for i in $(seq 3); do echo $i ; sleep 2 & ; done
Run Code Online (Sandbox Code Playgroud)

我收到错误:

bash: syntax error near unexpected token `;'
Run Code Online (Sandbox Code Playgroud)

在zsh中命令行有效.

gam*_*may 108

除掉 ; 睡了之后

for i in $(seq 3); do echo $i ; sleep 2 & done
Run Code Online (Sandbox Code Playgroud)

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

for i in $(seq 3)
do
   echo $i
   sleep 2 &
done
Run Code Online (Sandbox Code Playgroud)

  • 请记住,它只会将"睡眠2"发送到背景. (2认同)

小智 38

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

for i in $(seq 3); do echo $i ; (sleep 2 &) ; done
Run Code Online (Sandbox Code Playgroud)

  • 请注意:你创建一个子shell.这也意味着你将无法"等待"后台作业结束. (5认同)