मैं एक स्क्रिप्ट बनाने की कोशिश कर रहा हूं जो कई पृष्ठभूमि कमांड शुरू करेगा। प्रत्येक पृष्ठभूमि कमांड के लिए मुझे रिटर्न कोड प्राप्त करने की आवश्यकता है।
मैं निम्नलिखित स्क्रिप्ट की कोशिश कर रहा हूँ:
#!/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]}
मेरा मुद्दा प्रतीक्षा लूप के दौरान है, यदि पहले एक से पहले दूसरा पिड खत्म हो जाता है, तो मैं रिटर्न कोड प्राप्त नहीं कर पाऊंगा।
मुझे पता है कि मैं pid1 pid2 प्रतीक्षा कर सकता हूं, लेकिन इस आदेश के साथ मुझे सभी आदेशों का रिटर्न कोड नहीं मिल सकता है।
कोई उपाय ?