我正在尝试通过分离命令来并行运行命令:
睡眠2秒&
#!/bin/bash
for ((i=1;i<=3;i++)); do
sleep 2s &
pids[${i}]=$!
done
for pid in ${pids[*]}; do
wait $pid
done
哪个会生成3倍的命令'sleep 2s'并等待命令完成
这将按预期执行(2秒):
pi @ raspberrypi:〜/ scripts $ time ./test.sh
真实0m 2.029s 用户0m0.022s sys 0m0.052s
当我尝试捕获流程的输出时,执行从并行更改为顺序。现在执行时间为6秒(3x 2秒)
输出[$ {i}] = $(睡眠2秒&)
#!/bin/bash
for ((i=1;i<=3;i++)); do
output[${i}]=$(sleep 2s &)
pids[${i}]=$!
done
for pid in ${pids[*]}; do
wait $pid
done
pi @ raspberrypi:〜/ scripts $ time ./test.sh
真实0m 6.030s 用户0m0.006s sys 0m0.015s
关于在并行运行命令时如何捕获输出的任何想法? 谢谢!