2011-11-22 17 views
6

को उद्धृत तर्कों को कैसे पास किया जाए, मुझे कुछ पाठ पास करने की आवश्यकता है जिसमें व्हाइटस्पेस और अन्य पात्रों को एक स्क्रिप्ट में शामिल किया गया है जो जीएनयू समांतर द्वारा चलाया जा रहा है।जीएनयू समांतर

यहाँ एक बहुत ही सरल उदाहरण है:

$ seq 1 3 | parallel echo "Quoted ' (text)" 

ऊपर के उदाहरण होगा उत्पादन इस:

sh: -c: line 0: unexpected EOF while looking for matching `'' 
sh: -c: line 1: syntax error: unexpected end of file 
sh: -c: line 0: unexpected EOF while looking for matching `'' 
sh: -c: line 1: syntax error: unexpected end of file 
sh: -c: line 0: unexpected EOF while looking for matching `'' 
sh: -c: line 1: syntax error: unexpected end of file  

हालांकि, अगर मैं ऐसा करते हैं सब कुछ काम करता है:

seq 1 3 | parallel echo "\"Quoted ' (text)\"" 

मैं हो इसे एक अजगर लिपि से चलाने के लिए, इसलिए तर्क पारित करने से पहले मैं उन्हें लिपि की तरह लिपि में दोहरा रहा हूं है:

args = ["Some arg", "Another arg", "etc."] 
args = ' '.join(pipes.quote(pipes.quote(arg)) for arg in args) 

लेकिन यह एक साफ समाधान की तरह प्रतीत नहीं होता है।

क्या कोई भी जीएनयू समांतर में तर्क पारित करने के बेहतर तरीके से जानता है?

धन्यवाद!

http://www.gnu.org/s/parallel/man.html#QUOTING

यह भी बहुत त्रुटि संदेश आप अपने प्रश्न में लिखने का उल्लेख है:

+0

'एक साफ समाधान नहीं', लेकिन क्या यह काम करता है? सौभाग्य। – shellter

उत्तर

8
zsh-4.3.12[sysadmin]% print -l {1..3} | 
    parallel -q echo "Quoted ' (text)" 
Quoted ' (text) 1 
Quoted ' (text) 2 
Quoted ' (text) 3 
+1

धन्यवाद! मैंने मैन पेज को इतना आसान के लिए देखा लेकिन वह नहीं मिला। इतनी स्पष्ट रूप से जवाब देने के लिए धन्यवाद और कुछ नहीं कह रहा "जैसे मैन पेज पढ़ें!" बहुत आसन। – chaimp

+1

इसे थोड़ा स्पष्ट बनाने के लिए: समानांतर के माध्यम से आदेशों में पारित तर्क दो बार शैल द्वारा विस्तारित होते हैं: एक बार समानांतर के आवेषण में, और एक बार जब समानांतर आपके आदेश को चलाता है। '-q' दूसरे खोल विस्तार को रोकता है। – mortehu

6

आदमी पेज में एक पूरे खंड के हवाले करने के लिए समर्पित है।

यदि आप इसे बेहतर लिख सकते हैं तो कृपया अपने संस्करण को ईमेल करें: [email protected]