Was ich versuche zu erreichen ist - die Ausgabe einiger Automatisierungsskripte auszuführen und zurückzugeben, aber ich verstehe nicht, warum ich ENV vars nicht in meinen Skripten verwenden kann?Verwendung von ENV VARS während der Ausführung von Befehl mit Subprozess in Python 3?
Ein einfaches Beispiel I
import os
import subprocess as sp
cmd = [ 'echo', '$_TEST' ]
myenv = {**{'_TEST':"is it working?"}, **os.environ }
pipe = sp.Popen(cmd, stdout=sp.PIPE, stderr=sp.PIPE, env=myenv );
print(pipe.communicate())
Was ich tue, falsch zu implementieren bin zu kämpfen?
Update: nach der richtigen Antwort erhalten.
import os
import subprocess as sp
cmd = [ '/bin/echo', '$_TEST' ]
myenv = {**{'_TEST':"is it working?"}, **os.environ }
pipe = sp.Popen(" ".join(cmd), stdout=sp.PIPE, shell=True, stderr=sp.PIPE, env=myenv );
print(pipe.communicate() )
Need
shell=True
ein Shell-Argument, um (oder einen Pfad zu anderen Shell zur Verfügung stellen), Shell müssen wir unsere Variablen bewerten.list
von Befehlen sollte durchstring
(z '/ bin/echo $ _test')
Oh! Vielen Dank! Ich war ein bisschen verwirrt, als ich 'shell = True' gesetzt habe, es gab überhaupt keine Ausgabe, aber als ich' list' in 'string' als erstes Argument änderte, begann es sofort zu arbeiten. Ich denke, ich muss mehr über Subprozess Interna und wie es funktioniert lesen. – Butuzov
@OlegButuzov Ja, es ist ein wenig verwirrend, dass Sie den Cmd-Typ ändern müssen. – CaptainTrunky