Estoy tratando de crear un script que iniciará muchos comandos de fondo. Para cada comando de fondo, necesito obtener el código de retorno.
He estado probando el siguiente script:
#!/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]}
Mi problema es durante el ciclo de espera, si el segundo pid termina antes del primero, no podré obtener el código de retorno.
Sé que puedo ejecutar wait pid1 pid2, pero con este comando no puedo obtener el código de retorno de todos los comandos.
Alguna idea ?