2012-12-19 5 views
8

Im folgenden Code, konstruiere ich eine Variable $ Probe1, die ich dann an ein Bash-Skript übergeben möchte. Im Beispiel unten ist die Ausgabe leer, d. H. $ Probe1 wird nicht vom Bash-Shell-Skript innerhalb des os.system-Aufrufs erkannt. Was getan werden muss?Übergabe von Variablen aus Python zu Bash-Shell-Skript über os.system

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 =‚...‘' tun möchte Sätze eine Python-Variable Es hat keinerlei Verbindung zu Bash. – Blender

+0

Gibt es eine Möglichkeit, eine Variable von Python auf die Bash-Shell zu übertragen? Das ist im Wesentlichen meine Frage. – user1815498

+0

Warum sollten Sie das tun? – Blender

Antwort

10

Scheint, wie das ist, was Sie zu tun versuchen:

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

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

Aber ich habe keine Ahnung, warum diese ...

+0

Ich verwende Python, um einige Variablennamen aus einer Datendatei zu extrahieren, die ich dann an ein Bash-Shell-Skript übergeben muss, um in einem anderen Programm ausgeführt zu werden. Das Beispiel mit echo ist nur ein "Spielzeug" -Skript, um das Problem des Verschiebens einer Variablen aus Python in eine Bash-Shell zu veranschaulichen. – user1815498

+0

@ user1815498 Vielleicht können Sie eine 'pipe' verwenden, um das zu tun: http://docs.python.org/2/library/subprocess.html – satoru

+0

In jedem Fall löst die Lösung os.environ [], die Sie vorschlagen, mein Problem. Danke für die Pipe-Referenz, es wird nützlich sein, wenn ich mehrere Variablen von Python an die Shell übergeben muss. – user1815498

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

PROBE1 ist ein Python variable, nicht ein Shell-Variable.

os.environ['probe1'] = probe1 

setzt die bash-Umgebungsvariable auf den Inhalt der Python-Variablen. Sobald das Python-Skript beendet ist, verschwindet die Umgebungsvariable.

+0

Ich weiß, dass meine Frage ist, wie ich eine Python-Variable auf die Bash-Shell übertragen kann. – user1815498

Verwandte Themen