2015-04-20 7 views
8

में एकाधिक तर्क पास करें मेरे पास एक छोटी सी इनलाइन पायथन स्क्रिप्ट है जिसे मैं एक बैश स्क्रिप्ट से कॉल करता हूं, और मैं इसे एक बहु-शब्द चर (जिसे $* से आता है) को संभालना चाहता हूं। मैं सिर्फ काम करने के लिए इस उम्मीद:बैश से पाइथन

#!/bin/bash 

arg="A B C" 
python -c "print '"$arg"'" 

लेकिन यह नहीं है:

File "<string>", line 1 
    print 'A 
     ^
SyntaxError: EOL while scanning string literal 

क्यों?

+2

'अजगर -c" प्रिंट \ "$ आर्ग \" "' मेरे लिए काम करता है। –

+2

या यहां तक ​​कि 'पायथन-सी "प्रिंट' $ arg ''' –

+2

सिंटैक्स हाइलाइटिंग समस्या दिखाती है :-) –

उत्तर

10

मैं क्यों अपने कोड ऐसा नहीं करता व्याख्या करने के लिए चाहते हैं काम।

कि आप क्या करना चाहते थे है:

arg="A B C" 
python -c "print '""$arg""'" 

आउटपुट:

A B C 

अपने कोड की समस्या यह है कि python -c "print '"$arg"'" खोल द्वारा python -c "print '"A B C"'" के रूप में पार्स किया जाता है। देखें:

arg="A B C" 
python -c "print '"A B C"'" 
#__________________^^^^^____ 

आउटपुट:

File "<string>", line 1 
    print 'A 

SyntaxError: EOL while scanning string literal 

यहाँ क्योंकि रिक्त स्थान संयोजन को रोकने यदि आप एक वाक्य रचना त्रुटि मिलती है, तो दो अलग तार कि स्ट्रिंग का हिस्सा नहीं हैं, जैसा कि निम्न B और C"'" व्याख्या कर रहे हैं पाइथन दुभाषिया के लिए एक आदेश के रूप में पारित किया गया है (जो केवल -c के बाद स्ट्रिंग लेता है)।

बेहतर समझ के लिए:

arg="ABC" 
python -c "print '"$arg"'" 

आउटपुट:

ABC 
+1

Awsome स्पष्टीकरण ब्रो +1, लेकिन आप shud इसे थोड़ा जल्दी पोस्ट किया है! –

+0

कोई बात नहीं: पी ग्लेड मैं मदद कर सकता था! –

+0

क्या आप स्पष्टीकरण दे सकते हैं कि क्यों 'पायथन-सी "प्रिंट'" ए बी सी "'' 'एक सिंटेक्स त्रुटि देता है? मुझे यकीन नहीं है कि मैं अनुसरण करता हूं। रिक्त स्थान पर क्या होता है? – Barry

16

बाश स्क्रिप्ट गलत है।

#!/bin/bash 

arg="A B C" 
python -c "print '$arg'" 

और उत्पादन

$ sh test.sh 
A B C 

ध्यान दें कि दो स्ट्रिंग चर आप उन्हें स्ट्रिंग के बाहर डाल करने के लिए की जरूरत नहीं है श्रेणीबद्ध करने के लिए स्थिरांक

+3

यहां स्ट्रिंग्स को जोड़ने पर एक अच्छा संसाधन मिला http://stackoverflow.com/questions/4181703/how-can- i-concatenate-string-variables-in-bash –

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