You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash中并行运行多组命令块?

实现Bash命令块内顺序执行、块间并行的方法

要让每组命令块内部按顺序执行,不同块之间并行运行,有两种实用的简单方法:

方法一:子shell后台执行

把每个命令块用括号()包裹,创建独立的子shell,再加上&将整个子shell放到后台运行。子shell内部的命令会按顺序执行,多个子shell则并行运行。最后用wait命令等待所有后台任务完成,避免脚本提前退出。

示例代码:

(
echo set1
# 加-p参数避免路径不存在时报错
mkdir -p /path/to/output/set_1/
python my_script1.py /path/to/output/set_1/
) &

(
echo set2
mkdir -p /path/to/output/set_2/
python my_script2.py /path/to/output/set_2/
) &

# 等待所有后台进程执行完毕
wait

方法二:函数封装后后台调用

把每个命令块封装成函数,函数内部的命令会按顺序执行,之后后台调用这些函数即可实现块间并行。这种方式代码更整洁,适合命令块较多的场景。

示例代码:

# 封装set1的命令逻辑
run_set1() {
    echo set1
    mkdir -p /path/to/output/set_1/
    python my_script1.py /path/to/output/set_1/
}

# 封装set2的命令逻辑
run_set2() {
    echo set2
    mkdir -p /path/to/output/set_2/
    python my_script2.py /path/to/output/set_2/
}

# 后台启动两个函数
run_set1 &
run_set2 &

# 等待所有后台任务完成
wait

可选:单独记录每个块的输出

如果需要分开查看每个命令块的运行日志,可以在后台执行时添加输出重定向:

(
echo set1
mkdir -p /path/to/output/set_1/
python my_script1.py /path/to/output/set_1/
) > set1.log 2>&1 &  # 将标准输出和错误输出都写入set1.log

(
echo set2
mkdir -p /path/to/output/set_2/
python my_script2.py /path/to/output/set_2/
) > set2.log 2>&1 &

wait

内容的提问来源于stack exchange,提问作者Makogan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:15:44