【问题标题】:Ampersand not working inside for loop in shell script&符号在shell脚本中的for循环内不起作用
【发布时间】:2017-05-31 15:00:58
【问题描述】:

我需要执行

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

【问题讨论】:

    标签: shell


    【解决方案1】:

    问题是& 后面的分号。

    这应该可以工作

    for i in {1..10}; do node simulator.js 1 & done
    

    这将分叉 10 个子 shell 进程。

    【讨论】:

    • 这很好用,但是当我尝试运行循环 1000 次时,终端在 420 处挂起,一切都冻结了,有什么限制吗?还是取决于硬件?
    • 我相信ulimit -u 定义了最大用户进程
    • 实际上我的整个系统都挂了,不确定是否会随着 ulimit 改变,但我会试一试。当我进行 1000 次循环时,我不得不强制关闭系统并重新启动。感觉这些过程可能会占用大量内存,不确定。
    • 是的,还有内存限制。您可以考虑将 GNU 并行用于受控后台处理。
    猜你喜欢
    • 1970-01-01
    • 2016-01-17
    • 2023-03-18
    • 2022-05-17
    • 1970-01-01
    • 2018-01-07
    • 2022-01-27
    • 2023-02-23
    • 2020-07-22
    相关资源
    最近更新 更多