Próbuję utworzyć skrypt, który uruchomi wiele poleceń w tle. Do każdego polecenia w tle muszę uzyskać kod powrotu.
Próbowałem następującego skryptu:
#!/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]}
Mój problem dotyczy pętli oczekiwania, jeśli drugi pid zakończy się przed pierwszym, nie będę w stanie uzyskać kodu powrotu.
Wiem, że mogę uruchomić czekaj pid1 pid2, ale dzięki temu poleceniu nie mogę uzyskać kodu powrotu wszystkich poleceń.
Dowolny pomysł ?