如何编写一个在每次迭代中运行异步命令的 for 循环?

如何编写一个在每次迭代中运行异步命令的 for 循环?

我想知道为什么在循环内使用异步命令会出错?

$ for i in {1..8}; do sleep 100 & ; done
bash: syntax error near unexpected token `;'

如果我把它写成

$ for i in {1..8}; do 
> sleep 100 & 
> done

这很好用。

怎样才能写成一行而不出错呢?

答案1

删除;

for i in {1..8}; do sleep 100 & done

&分隔命令,因此;是无关的(并且 shell 期望介于&和之间;)。

答案2

团体do在大括号中的操作:

for i in {1..8}; do { sleep 100 & }; done

对于您和 Bash 来说都很容易理解!

相关内容