ฉันพยายามสร้างสคริปต์ซึ่งจะเริ่มคำสั่งพื้นหลังจำนวนมาก สำหรับแต่ละคำสั่งพื้นหลังฉันต้องได้รับรหัสส่งคืน
ฉันลองใช้สคริปต์ต่อไปนี้แล้ว:
#!/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]}
ปัญหาของฉันอยู่ระหว่างการรอลูปถ้า pid ที่สองเสร็จสิ้นก่อนอันแรกฉันจะไม่สามารถรับรหัสส่งคืนได้
ฉันรู้ว่าฉันสามารถเรียกใช้รอ pid1 pid2 แต่ด้วยคำสั่งนี้ฉันไม่สามารถรับรหัสส่งคืนของคำสั่งทั้งหมดได้
ความคิดใด ๆ