Ich mache einen GIT-Hook in Python 3.5. Das Python-Skript ruft ein Bash-Skript auf, das Eingaben vom Benutzer mit dem Befehl read
liest.GIT Hook -> Python -> Bash: Wie Benutzereingaben lesen?
Das Bash-Skript selbst funktioniert auch beim Aufruf des Python-Skripts, aber wenn GIT den in Python geschriebenen Hook ausführt, funktioniert es nicht wie erwartet, da vom Benutzer keine Benutzereingabe angefordert wird.
Bash-Skript:
#!/usr/bin/env bash
echo -n "Question? [Y/n]: "
read REPLY
GIT Hook (Python-Skript):
#!/usr/bin/env python3
from subprocess import Popen, PIPE
proc = Popen('/path/to/myscript.sh', shell=True, stderr=PIPE, stdout=PIPE)
stdout_raw, stderr_raw= proc.communicate()
Wenn ich das Python-Skript ausführen, Bash read
nicht auf eine Eingabe warten zu sein scheint, und ich nur erhalten:
b'\nQuestion? [Y/n]: \n'
Wie der bash-Skript Eingang lesen lassen, wenn sie von Python genannt zu werden?
@DYZ> das sollte das Standardverhalten sein: * "Mit den Standardeinstellungen von None wird keine Umleitung erfolgen; Die Datei-Handles des Kindes werden vom Elternteil übernommen. "* – spectras
@DYZ Hinzufügen von' stdin = sys.stdin' scheint nichts zu tun ... immer noch keine Eingabeeingabe möglich – arod
@arod> Kopieren Sie den Code, und funktioniert gut hier, vorausgesetzt, '.' ist in '$ PATH' (das ist eine schlechte Idee, obwohl Sie das nicht tun sollten) – spectras