Ich versuche ein Skript zu erstellen, das viele Hintergrundbefehle startet. Für jeden Hintergrundbefehl muss ich den Rückkehrcode erhalten.
Ich habe folgendes Skript ausprobiert:
#!/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]}
Mein Problem ist während der Warteschleife. Wenn die zweite PID vor der ersten endet, kann ich den Rückkehrcode nicht erhalten.
Ich weiß, dass ich wait pid1 pid2 ausführen kann, aber mit diesem Befehl kann ich nicht den Rückkehrcode aller Befehle erhalten.
Irgendeine Idee ?