2012-12-19 5 views
8

के माध्यम से पाइथन से बैश खोल स्क्रिप्ट से गुजरने वाले चर निम्नलिखित कोड में, मैं एक चर $ जांच 1 बनाता हूं जिसे मैं एक बैश स्क्रिप्ट में पास करना चाहता हूं। मैं नीचे खिलौना उदाहरण है, आउटपुट खाली है, यानी $ prob1 को os.system कॉल के भीतर बैश खोल स्क्रिप्ट को पहचाना नहीं गया है। क्या किये जाने की आवश्यकता है?ossystem

for line1 in datfile: 
    datmat=datmat+[line1.rstrip('\n').split('\t')] 
     probe=datmat[i][0] 
     snp1=datmat[i][2] 
    probe1='permprobes'+probe+'pheno.pphe' 
    os.system('echo $probe1') 
+0

'probe1 = '...'' सेट एक पायथन चर। बैश के साथ इसका कोई संबंध नहीं है। – Blender

+0

क्या पाइथन से बैश खोल में एक चर ले जाने का कोई तरीका है? यह अनिवार्य रूप से मेरा सवाल है। – user1815498

+0

आपको ऐसा करने की आवश्यकता क्यों होगी? – Blender

उत्तर

10

लगता है इस तरह तुम क्या करने की कोशिश कर रहे है:

In [2]: os.environ['probe1'] = 'hello' 

In [3]: os.system('echo $probe1') 
hello 

लेकिन मुझे पता नहीं है कि आपको यह करना चाहते हैं ...

+0

मैं डेटा फ़ाइल से कुछ परिवर्तनीय नाम निकालने के लिए अजगर का उपयोग कर रहा हूं, जिसे मुझे किसी अन्य प्रोग्राम में चलाने के लिए बैश खोल स्क्रिप्ट को पास करने की आवश्यकता है। गूंज के साथ उदाहरण एक "खिलौना" स्क्रिप्ट है जो एक चर को पाइथन से एक बैश खोल में ले जाने की समस्या को दर्शाने के लिए है। – user1815498

+0

@ user1815498 शायद आप ऐसा करने के लिए 'पाइप' का उपयोग कर सकते हैं: http://docs.python.org/2/library/subprocess.html – satoru

+0

किसी भी मामले में, os.environ [] समाधान जो आप प्रस्तावित करते हैं, मेरी समस्या हल करता है। पाइप संदर्भ के लिए धन्यवाद, यह आसान होगा जब मुझे पाइथन से खोल में एकाधिक चर पारित करने की आवश्यकता होती है। – user1815498

4
os.system('echo {0}'.format(probe1)) 

probe1 एक अजगर चर, नहीं एक खोल चर रहा है।

os.environ['probe1'] = probe1 

बैश पर्यावरण चर को पायथन चर सामग्री में सेट करेगा। एक बार पाइथन लिपि बाहर निकलने के बाद, पर्यावरण परिवर्तनीय दूर चला जाता है।

+0

मुझे पता है कि, मेरा सवाल यह है कि मैं एक पायथन चर को बैश खोल में कैसे स्थानांतरित कर सकता हूं। – user1815498

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

  • कोई संबंधित समस्या नहीं^_^