Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann man in Go programmgesteuert mehrere Eingabefelder für einen externen Befehl bereitstellen?

Wie kann man in Go programmgesteuert mehrere Eingabefelder für einen externen Befehl bereitstellen?

Susan Sarandon
Susan SarandonOriginal
2024-10-28 13:43:02580Durchsuche

How to Programmatically Provide Multiple Input Fields to an External Command in Go?

Schreiben externer Befehle in Go in STDIN

In Go ist es bei der Ausführung externer Befehle häufig erforderlich, Eingaben über STDIN bereitzustellen. In diesem Artikel wird eine Technik zum Schreiben von Eingaben in STDIN untersucht, wenn es um Befehle geht, die mehrere Eingabefelder erfordern.

Betrachten wir einen Befehl, der nacheinander zur Eingabe eines Benutzernamens und eines Passworts auffordert, wie der Befehl „login“. Um diese Eingaben programmgesteuert bereitzustellen, müssen wir in die STDIN des Befehls schreiben.

Der ursprüngliche Ansatz bestand darin, die Eingabefelder manuell zu bearbeiten, wie im folgenden Code dargestellt:

<code class="go">login := exec.Command(cmd, "login")

login.Stdout = os.Stdout
login.Stdin = os.Stdin
login.Stderr = os.Stderr

err := login.Run()
if err != nil {
    fmt.Fprintln(os.Stderr, err)
}</code>

Allerdings , diese Methode erlaubt keine programmgesteuerte Eingabe. Die Lösung besteht darin, einen bytes.Buffer zum Zusammenstellen der Eingabe zu verwenden. Hier ist ein verbesserter Code:

<code class="go">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</code>

Der bytes.Buffer fungiert als Zeichenpuffer. Indem wir den Benutzernamen und das Passwort durch Zeilenumbrüche getrennt schreiben, erstellen wir im Wesentlichen eine Folge von Eingaben, die der externe Befehl der Reihe nach liest. Dem Stdin-Feld des Befehls wird der Puffer zugewiesen, um sicherzustellen, dass die Eingaben in den Prozess des Befehls eingespeist werden.

Dieser Ansatz ermöglicht die automatisierte Eingabe in externe Befehle mit mehreren Eingabefeldern und vereinfacht so die Interaktion zwischen Go und anderen Befehlen. Linienwerkzeuge.

Das obige ist der detaillierte Inhalt vonWie kann man in Go programmgesteuert mehrere Eingabefelder für einen externen Befehl bereitstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn