J'essaie de créer un script qui lancera de nombreuses commandes d'arrière-plan. Pour chaque commande d'arrière-plan, j'ai besoin d'obtenir le code retour.
J'ai essayé le script suivant:
#!/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]}
Mon problème est pendant la boucle d'attente, si le deuxième pid se termine avant le premier, je ne pourrai pas obtenir le code retour.
Je sais que je peux exécuter wait pid1 pid2, mais avec cette commande, je ne peux pas obtenir le code retour de toutes les commandes.
Une idée ?