Übergeben Sie eine variable aus python -, shell-Skript
Mir läuft ein shell-Skript aus in einem python-Skript wie dieses:
call(['bash', 'run.sh'])
Willst und ich pass run.sh
ein paar Variablen aus dem inneren der python-Skript. Wie es aussieht kann ich nur anfügen Variablen, so etwas wie so:
call(['bash', 'run.sh', 'var1', 'var2'])
und dann greifen Sie in mein shell-Skript mit $1 und $2. Aber ich kann nicht ankommen dieses zu wirken.
- Was meinst du, dass Sie nicht bekommen kann es arbeiten? Was sonst sind Sie immer ?
- Mögliche Duplikate von Wie man die übergabe von Variablen aus einem python-Skript für bash-Skript
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn
call(['bash', 'run.sh'])
ohne Argumente, es gibt keinen Grund, warum es nicht funktionieren sollte, wenn zusätzliche Argumente übergeben werden.Müssen Sie ersetzen die Werte der Variablen in das command-line Argumente, nicht einfach die Namen der Variablen als Zeichenfolgen wie diese:
Statt, hierzu:
Nun diese Arbeit wird vorausgesetzt, dass
var1
undvar2
sind strings. Wenn nicht, müssen Sie konvertieren Sie Sie in strings:Oder verwenden Sie
shlex.split()
:verwenden Teilprozess zu rufen, Ihre shell-Skript
Teilprozess.Popen(['run.sh %s %s' % (var1, var2)], shell = True).
var1
enthält Leerzeichen oder eine von mehreren anderen shell-Metazeichen. Es ist selten ein guter Grund für die Verwendung von single-string-argument zuPopen
im Ort eine Liste.Gibt es zwei eingebaute python-Module, die Sie dafür benutzen können. Man ist
os
und der andere istsubprocess
. Obwohl es sieht aus wie Sie verwendensubprocess
zeige ich beide.Hier ist das Beispiel bash-Skript, dass ich für dieses.
test.sh
Mit Unterprozess
Dieser arbeiten sollte, können Sie uns zeigen, den Fehler oder die Leistung, die Sie momentan bekommen.
Mit os
Hinweis: der exit-status, die
os
druckt nach jedem Aufruf.