2015-06-03 17 views
6

मैं जीएनयू के parallel का उपयोग कर समानांतर में एक प्रोग्राम prog चलाने के लिए एक तर्क के साथ एक तर्क के साथ एक प्रोग्राम चलाने के लिए चाहता हूं। उदाहरण के लिए:परिवर्तनीय अनुक्रम के साथ समानांतर जीएनयू?

parallel prog ::: {1..100} 

हालांकि, मैं पहले से अनुक्रम की ऊपरी सीमा नहीं जानता है, इसलिए मैं कुछ ऐसा करने में सक्षम होना चाहते हैं:

parallel prog ::: {1..$x} 

जहां $x एक नंबर है कि मैं कहीं गणना करूंगा। इसे कैसे प्राप्त किया जा सकता है?

+0

आप 'eval' की आवश्यकता होगी। – jordanm

+0

'eval' का उपयोग किया जा सकता है, लेकिन आवश्यक या अनुशंसित नहीं है। – chepner

उत्तर

5

seq कार्यक्रम मान लिया जाये कि (या इसे की तरह कुछ) उपलब्ध कर सकते हैं नकली है,

parallel prog ::: $(seq 1 $x) 

यदि नहीं, तो आप इसे:

parallel prog ::: $(for ((i=1; i < x; i++)) do; echo $i; done) 

ओले बताते हैं, अगर $x, बड़ी है तो के रूप में कमांड लाइन पर फ़िट होने के लिए संख्याओं का परिणामी अनुक्रम बहुत बड़ा हो सकता है। उस मामले में, मानक इनपुट के माध्यम से parallel के तर्क को खिलाने के लिए उपरोक्त दो किसी भी विधि का उपयोग करें:

seq 1 "$x" | parallel prog 
for ((i=1; i<x; i++)) do; echo "$i"; done | parallel prog 
+1

यदि $ x बड़ा है: seq $ x | समानांतर कार्यक्रम –

संबंधित मुद्दे