एक python -cउन्मुख समाधान के लिए, और बश शेल का उपयोग करने के लिए, हां आपके पास इस उदाहरण में एक सरल एक-पंक्ति सिंटैक्स हो सकता है:
मान लीजिए कि आप ऐसा कुछ करना चाहते हैं ( except: passअनुदेश सहित आपके नमूने के समान ):
python -c "from __future__ import print_function\ntry: import numpy; print( numpy.get_include(), end='\n' )\nexcept:pass\n" OUTPUT_VARIABLE __numpy_path
यह काम नहीं करेगा और इस त्रुटि का उत्पादन करेगा:
File "<string>", line 1
from __future__ import print_function\ntry: import numpy; print( numpy.get_include(), end='\n' )\nexcept:pass\n
^
SyntaxError: unexpected character after line continuation character `
इसका कारण यह है कि बैश और पायथन इंटरप्रिटेशन ऑफ \nएस्केप सीक्वेंस के बीच प्रतिस्पर्धा । समस्या को हल करने के लिए एक $'string'बैश वाक्यविन्यास का उपयोग करके \nबैश व्याख्या को पहले पायथन के लिए मजबूर किया जा सकता है । उदाहरण को और अधिक चुनौतीपूर्ण बनाने के लिए मैंने end=..\n..पायथन प्रिंट कॉल में एक विशिष्ट पायथन विनिर्देशन जोड़ा : अंत में आप \nबैश और पायथन से बीओटीएच व्याख्याओं को एक साथ काम करने में सक्षम होंगे , प्रत्येक चिंता के पाठ के टुकड़े पर। ताकि अंत में उचित समाधान इस तरह हो:
python -c $'from __future__ import print_function\ntry:\n import numpy;\n print( numpy.get_include(), end="\\n" )\n print( "Hello" )\nexcept:pass\n' OUTPUT_VARIABLE __numpy_path
जो बिना किसी त्रुटि के उचित स्वच्छ आउटपुट की ओर जाता है:
/Softs/anaconda/lib/python3.7/site-packages/numpy/core/include
Hello
नोट: यह execउन्मुख समाधानों के साथ-साथ काम करना चाहिए , क्योंकि समस्या अभी भी वही है (बैश और पायथन दुभाषिए प्रतियोगिता)।
टिप्पणी 2: एक कुछ की जगह समस्या वैकल्पिक हल कर सकता है \nकुछ लोगों द्वारा ;, लेकिन यह जबकि मेरी समाधान हमेशा "एक पंक्ति का" क्लासिक बहु लाइन अजगर कार्यक्रम के किसी भी भाग के लिए अनुमति देता है, काम किसी भी समय (अजगर निर्माणों के आधार पर) नहीं होगा।
नोट 3: बेशक, जब एक-अस्तर, एक को हमेशा पायथन रिक्त स्थान और इंडेंटेशन का ख्याल रखना पड़ता है, क्योंकि वास्तव में हम यहां "एक-अस्तर" कड़ाई से नहीं हैं, लेकिन \nबैश और पायथन के बीच भागने के क्रम का एक उचित मिश्रित प्रबंधन कर रहे हैं । यह है कि हम क्लासिक मल्टी-लाइन पायथन कार्यक्रम के किसी भी टुकड़े से कैसे निपट सकते हैं। समाधान का नमूना इसे भी दिखाता है।