उस स्क्रिप्ट से कई सबप्रोसेस के लिए बैश स्क्रिप्ट में प्रतीक्षा करने के लिए कैसे समाप्त कोड को वापस करने और वापस लौटने के लिए? = 0 जब कोड के साथ कोई भी उपप्रकार समाप्त होता है? = 0
सरल स्क्रिप्ट:
#!/bin/bash
for i in `seq 0 9`; do
doCalculations $i &
done
wait
उपरोक्त स्क्रिप्ट सभी 10 स्पॉन्स्ड सबप्रोसेस के लिए प्रतीक्षा करेगी, लेकिन यह हमेशा एग्जिट स्टेटस 0 देगी (देखें help wait
)। मैं इस लिपि को कैसे संशोधित कर सकता हूं ताकि यह स्पॉन्स्ड सबप्रोसेस की एग्जिट स्टेटस की खोज करे और एग्जिट कोड 1 लौटाए जब कोई भी सबप्रोसेसिस कोड के साथ समाप्त हो जाए! = 0!
क्या इसके लिए कोई बेहतर उपाय है कि उपप्रकारों के पीआईडी एकत्र करने से, क्रम में उनके लिए प्रतीक्षा करें और निकास की स्थिति का योग करें?
wait -n
में एक छोटी सी समस्या है: यदि कोई बाल रोजगार शेष नहीं है (उर्फ दौड़ की स्थिति), तो यह एक गैर-शून्य निकास स्थिति (असफल) देता है जो एक असफल बाल प्रक्रिया से अप्रभेद्य हो सकता है।
wait -n
, केवल पहले / अगले आदेश के पूरा होने पर वापस लौटने के लिए आधुनिक बैश में उपलब्ध है।