2012-12-19 19 views
8

Aşağıdaki kodda, bir bash komut dosyasına geçmek istediğim $ probe1 değişkenini yapıyorum. Aşağıdaki oyuncak örneğim, çıktı boş, yani $ probe1, os.system çağrısı içindeki bash kabuk betiği olarak tanınmıyor. Ne yapılması gerekiyor?python'dan bash shell komut dosyasına os.system aracılığıyla değişkenleri geçirme

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 = '...'' setleri: Bu Yapmaya çalıştığınız budur gibi – Blender

+0

Python'dan bash kabuğuna bir değişkenin üstesinden gelmenin bir yolu var mı? Bu aslında benim sorum. – user1815498

+0

Bunu neden yapmalısınız? – Blender

cevap

10

görünüyor Bir Python değişkeni. Bash ile hiç bir bağlantısı yok.
+0

Başka bir programda çalıştırmak için bir bash kabuk betiğine geçmek zorunda olduğum bir veri dosyasından bazı değişken adlarını ayıklamak için python kullanıyorum. Yankı olan örnek, bir değişkeni python'dan bir bash kabuğuna taşıma problemini gösteren bir "oyuncak" betiğidir. – user1815498

+0

@ user1815498 Belki de bunu yapmak için 'pipe' kullanabilirsiniz: http://docs.python.org/2/library/subprocess.html – satoru

+0

Her durumda, önerdiğiniz os.environ [] çözümü sorunumu çözer. Boru referansı için teşekkür ederiz, python'dan mermiye çoklu değişkenleri aktarmam gerektiğinde kullanışlı olacaktır. – user1815498

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

probe1 bir piton değişkeni, bir kabuk değişkendir. Bash ortam değişkenini python değişken içeriğine ayarlayacaktır. Python betiği çıktığında ortam değişkeni ortadan kalkar.

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

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

Ama bunu istiyorum neden hiçbir fikrim yok ...

+0

Bunu biliyorum, sorum şu ki bir python değişkenini bash kabuğuna nasıl aktarabilirim. – user1815498

İlgili konular