Sto cercando di creare uno script che avvierà molti comandi in background. Per ogni comando in background ho bisogno di ottenere il codice di ritorno.
Ho provato il seguente 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]}
Il mio problema è durante il ciclo di attesa, se il secondo pid termina prima del primo, non sarò in grado di ottenere il codice di ritorno.
So che posso eseguire wait pid1 pid2, ma con questo comando non riesco a ottenere il codice di ritorno di tutti i comandi.
Qualche idea ?