bash脚本中的多线程和来自循环的echo pids

时间:2014-05-07 07:28:06

标签: arrays multithreading bash background pid

我想以多线程形式运行带有不同参数的命令,

我尝试的是:

#!/bin/bash

ARG1=$1
ARG2=$2
ARG3=$3

for ...  #counter is i
do
 main command with ARG1 ARG2 ARG3  & a[i]=$!
done
wait `echo  ${a[@]}`

我在for循环中使用了& a[i]=$!,在for循环之后使用了wait $(echo ${a[@]})。我希望我的bash在所有线程完成之前都会哭,然后为我回复pid ...

但是当我在一段时间后运行我的脚本时它会等待。

谢谢

1 个答案:

答案 0 :(得分:0)

我想你想要这个:

#!/bin/bash
for i in 0 1 2
do
   sleep 3 & a[$i]=$!
done
wait
echo ${a[@]}

您在脚本中缺少数组索引$上的$i。此外,如果您正在等待所有PID,则无需说明您要使用的PID。你还说你想在最后看到PID列表。