मैं कई फाइलों को प्रोसेस करना चाहता हूं और चूंकि मुझे यहां कोर का एक गुच्छा मिला है, जो मैं इसे समानांतर में करना चाहता हूं:
for i in *.myfiles; do do_something $i `derived_params $i` other_params; done
मैं एक Makefile समाधान के बारे में जानता हूं, लेकिन मेरे आदेशों को शेल ग्लोबिंग सूची से बाहर तर्कों की आवश्यकता है। मैंने जो पाया वह है:
> function pwait() {
> while [ $(jobs -p | wc -l) -ge $1 ]; do
> sleep 1
> done
> }
>
इसका उपयोग करने के लिए, सभी को एक काम करना होगा और जॉब और एक प्वॉइट कॉल के बाद, पैरामीटर समानांतर प्रक्रियाओं की संख्या देता है:
> for i in *; do
> do_something $i &
> pwait 10
> done
लेकिन यह बहुत अच्छी तरह से काम नहीं करता है, उदाहरण के लिए, मैंने इसे कई फ़ाइलों को परिवर्तित करने वाले लूप के लिए उदाहरण के साथ आज़माया, लेकिन मुझे त्रुटि दे दी और नौकरी छोड़ दी।
मैं विश्वास नहीं कर सकता कि यह अभी तक नहीं किया गया है क्योंकि zsh मेलिंग सूची पर चर्चा अब तक बहुत पुरानी है। तो क्या आप कोई बेहतर जानते हैं?
echo "DONE"
था लूप के बाद जिसे सक्रिय नौकरियों के समाप्त होने से पहले निष्पादित किया गया था। => यह मुझे लगता है कि नौकरियों के लिए किया गया था।