多くのバックグラウンドコマンドを開始するスクリプトを作成しようとしています。バックグラウンドコマンドごとに、リターンコードを取得する必要があります。
私は次のスクリプトを試しています:
#!/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]}
私の問題は待機ループ中にあり、2番目のPIDが最初のPIDの前に終了すると、戻りコードを取得できません。
wait pid1 pid2を実行できることはわかっていますが、このコマンドではすべてのコマンドの戻りコードを取得できません。
何か案が ?