在Shell脚本的for循环中,&符号无法正常工作

3
我需要执行。
node simulator.js 1 &
node simulator.js 2 &
node simulator.js 3 &
node simulator.js 4 &
node simulator.js 5 &
...
node simulator.js 10 &

所以,我尝试使用shell脚本循环来做这件事,但是我遇到了这个错误。

user@host$ for i in {1..10}; do node simulator.js "${i}" &; done
bash: syntax error near unexpected token `;'

我对Shell脚本还比较陌生,可能只是一个小问题,有人可以帮忙解决一下吗?
更新: 问题不在于for循环,而是在于&符号,即使我这样做也无法解决错误。
for i in {1..10}; do node simulator.js 1 &; done
1个回答

3
问题在于 & 后面的分号缺失。
以下代码应该可以正常工作。
for i in {1..10}; do node simulator.js 1 & done

这将分叉10个子shell进程。

这个很好用,但是当我尝试运行1000次循环时,终端在420处挂起,一切都冻结了,这是否有限制?还是取决于硬件? - Parthapratim Neog
我相信 ulimit -u 定义了最大用户进程数 - anubhava
实际上我的整个系统都挂了,不确定通过ulimit是否会改变,但我会试一试。当我进行了1000次循环时,我不得不强制关闭系统并重新启动。感觉进程可能占用了很多内存,但不确定。 - Parthapratim Neog
是的,也有内存限制。您可以考虑使用GNU Parallels进行受控后台处理。 - anubhava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接