2016-05-24 9 views
0

mein Python-Skript ruft ein anderes Bash-Skript (das Argumente erhalten) und öffnet es in einem neuen Terminal (es mag seltsam erscheinen, aber ich habe meine Gründe) .Übergabe lokale Variable an Unterprozess popen läuft 'gnome-terminal -e' in Python

Ich versuche, lokale Python-Variable zu popen übergeben, aber ich bekomme leere Argumente in mybashscript. was mache ich falsch?

Codebeispiel:

var1="aaa" 
var2="bbb" 
var3="ccc" 

subprocess.Popen(["gnome-terminal", "-e", "/home/mybashscript", var1, var2, var3]) 

I var1 benötigen, var2 und var3 die Bash-Skript Argumente zu sein.

+0

Funktioniert es, wenn Sie manuell ausführen 'gnome-terminal -e/home/mybashscript aaa bbc ccc'? – Selcuk

+0

ja. es funktioniert ok. – Nlandau

Antwort

1
var1="aaa" 
var2="bbb" 
var3="ccc" 

subprocess.Popen(["gnome-terminal", "-e", "/home/mybashscript -"+var1+" -"+var2+" -"+var3]) 

oder

var1="aaa" 
var2="bbb" 
var3="ccc" 

subprocess.Popen(["gnome-terminal", "-e", 
       "/home/mybashscript %s %s %s" % (var1, var2, var3)]) 
+0

die zweite Option funktioniert nicht. der erste fehlt "irgendwo? – Nlandau

+0

sorry. die erste option funktioniert einwandfrei. danke! – Nlandau

+0

@Nlandau: das zweite Codebeispiel hatte'] 'an der falschen Stelle, sollte es kommen * nach * der Zeichenfolge, dh, die Absicht ist es zu erstellen der Befehl: '[" gnome-terminal "," -e ","/home/mybashscript aaa bbb ccc "]). Hinweis: Die Option" xterm -e "würde mit Ihrem ursprünglichen Befehl funktionieren (' -e' verbraucht alle.) folgende Parameter in xterm's Fall und es verbraucht nur einen Parameter im 'gnome-terminal'-Fall. Alternativ hätten Sie' gnome-terminal -x' verwenden können, um die restlichen Argumente an den Befehl zu übergeben. – jfs