Ich habe ein Problem in Arbeit. Hier ist es.Wie schreibe ich ein Python-Skript für die Interaktion mit Shell-Skripten
Ich habe mehrere Skripte (meist sind Shell-Skripte) ausgeführt, und ich möchte ein Python-Skript schreiben, um sie automatisch auszuführen. Eines dieser Shellskripts benötigt während der Ausführung die interaktive Eingabe. Was mich beunruhigte, ist, dass ich keine Möglichkeit finde, seine Eingabeaufforderung zu lesen, also kann ich nicht entscheiden, was ich eingeben soll, um fortzufahren.
vereinfacht ich das Problem etwas wie folgt aus:
Es gibt ein Skript mediator.py
, benannt, die greeter.sh
innen laufen. Das mediator
nimmt die Eingabeaufforderung greeter
und druckt es dem Benutzer, dann erhält Benutzereingabe und übergibt es an greeter
. Die mediator
muss vom Standpunkt des Benutzers genau wie die greeter
handeln.
Hier ist greeter.sh
:
#! /bin/bash
echo "Please enter your name: " # <- I want 'mediator.py' to read this prompt and show it to me, and then get what I input, then pass my input to 'greeter.sh'
read name
echo "Hello, " $name
ich dies in der folgenden Reihenfolge tun:
- Der Benutzer (das bin ich) laufen
mediator.py
- Der
mediator
Laufgreeter.sh
innen - Die
mediator
erhalten die Eingabeaufforderung vongreeter
, und geben Sie es auf dem Bildschirm aus. (Zu diesem Zeitpunkt wird diegreeter
für die Eingabe des Benutzers wartet. Das ist das Hauptproblem ich mit stecken) - Die Benutzereingabe eine Zeichenfolge (zB ‚Mike‘),
mediator
die Zeichenfolge ‚Mike‘ erhalten und übertragen esgreeter
- die
greeter
die Namen bekommen ‚Mike‘ und druckt einen gruß - die
mediator
die Begrüßung erhalten, und gibt es auf dem Bildschirm.
ich für einige Lösung gesucht und bestimmt mit stdout
von Teilprozess zu PIPE
gerichtet Popen
Funktion in subprocess
Modul zu verwenden, ist es so etwas wie diese:
sb = subprocess.Popen(['sh', 'greeter.sh'], stdout = subprocess.PIPE, stdin = stdout, stderr = stdout)
aber ich kann das Haupt nicht lösen Problem in Schritt 3 oben. Kann mir jemand Hilfe geben? Vielen Dank!
Vielen Dank für Ihre Antwort zuerst. Ich habe dieses Nutzungsszenario entwickelt, weil ich es in der Arbeit getroffen habe.Ich habe mehrere Shell-Skripte zu laufen, und ich möchte ein Python-Skript schreiben, um sie automatisch auszuführen. Bei einem dieser Shell-Skripte muss der Benutzer einige Optionen eingeben, während er exexutiert. Daher muss ich die Eingabeaufforderung des Shell-Skripts abrufen und dann bestimmen, welche Option für die weitere Ausführung eingegeben werden soll. Das ist es. –
Sie sollten Ihre Frage dann mit diesem Kontext bearbeiten - das ist ein etwas anderes Problem. Was ich einem 'Subprozess'-Experten FWIW überlassen werde ... –
Danke ~ Die Frage wurde jetzt neu beschrieben. –