Bei der Ausführung externer Befehle, die Benutzereingaben erfordern, kann es schwierig sein, diesen Prozess effektiv zu automatisieren. Stellen Sie sich das folgende Szenario vor, in dem ein externer Befehl auf Eingaben für Benutzername und Passwort wartet.
Der Kern dieses Problems liegt in der Bereitstellung von Eingaben für mehrere Felder in der stdin des Befehls. Ein Ansatz besteht darin, einen Byte-Puffer zu verwenden:
login := exec.Command(cmd, "login") var b bytes.Buffer b.Write([]byte(username + "\n" + pwd + "\n")) login.Stdout = os.Stdout login.Stdin = &b login.Stderr = os.Stderr
Hier wird ein Byte-Puffer b erstellt und mit den rohen Eingabewerten für Benutzername und Passwort, getrennt durch Zeilenumbrüche, gefüllt. Das Stdin-Feld des Login-Befehls wird dann mit dem Puffer verknüpft. Dadurch wird sichergestellt, dass der externe Befehl bei der Ausführung Eingaben aus dem vorab gefüllten Puffer liest.
Der Eingabepuffer kann mehrere Zeilen verarbeiten, indem er die Daten nacheinander speichert. Wenn der Befehl Eingaben liest, durchläuft er den Puffer Zeichen für Zeichen und behandelt dabei Zeilenumbrüche als Feldtrennzeichen. Dies ermöglicht die automatisierte Eingabe mehrerer Eingaben in die Standardeingabe des Befehls.
Indem Sie einen Bytepuffer verwenden und ihn als Standardeingabe für den externen Befehl festlegen, können Sie effizient mehrere Werte eingeben innerhalb Ihres Programms, wodurch die Notwendigkeit einer manuellen Eingabe oder einer komplexen Handhabung von Eingabeströmen entfällt. Diese Methode bietet eine bequeme Möglichkeit, die Eingabe für externe Befehle zu automatisieren, Ihre Codebasis zu vereinfachen und den Programmablauf zu verbessern.
Das obige ist der detaillierte Inhalt vonWie automatisiere ich Benutzereingaben für externe Befehle in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!