我正在尝试创建一个脚本,它将启动许多后台命令。对于每个后台命令,我需要获取返回码。
我一直在尝试以下脚本:
#!/bin/bash
set -x
pid=()
return=()
for i in 1 2
do
echo start $i
ssh mysql "/root/test$i.sh" &
pid[$i]=$!
done
for i in ${#pid[@]}
do
echo ${pid[$i]}
wait ${pid[$i]}
return[$i]=$?
if [ ${return[$i]} -ne 0 ]
then
echo mail error
fi
done
echo ${return[1]}
echo ${return[2]}
我的问题是在等待循环中,如果第二个pid在第一个pid之前完成,我将无法获得返回代码。
我知道我可以运行wait pid1 pid2,但是使用此命令我无法获得所有命令的返回码。
任何的想法 ?