我想以多线程形式运行带有不同参数的命令,
我尝试的是:
#!/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
...
但是当我在一段时间后运行我的脚本时它会等待。
谢谢
答案 0 :(得分:0)
我想你想要这个:
#!/bin/bash
for i in 0 1 2
do
sleep 3 & a[$i]=$!
done
wait
echo ${a[@]}
您在脚本中缺少数组索引$
上的$i
。此外,如果您正在等待所有PID,则无需说明您要使用的PID。你还说你想在最后看到PID列表。