Heim Backend-Entwicklung Golang 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?

Oct 28, 2024 pm 01:43 PM

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:

1

2

3

4

5

6

7

8

9

10

<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>

Nach dem Login kopieren

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:

1

2

3

4

5

6

7

8

<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 = &amp;b

login.Stderr = os.Stderr</code>

Nach dem Login kopieren

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!

Erklärung dieser Website
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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich? GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich? Mar 03, 2025 pm 05:17 PM

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich?

Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren? Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren? Mar 03, 2025 pm 05:22 PM

Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren?

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go? Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go? Mar 10, 2025 pm 05:38 PM

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go?

Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache? Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache? Mar 03, 2025 pm 05:18 PM

Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache?

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren? Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren? Mar 10, 2025 pm 03:20 PM

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren?

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen? Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen? Mar 10, 2025 pm 05:36 PM

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen?

Wie schreibt man Unit -Tests in Go? Wie schreibt man Unit -Tests in Go? Mar 21, 2025 pm 06:34 PM

Wie schreibt man Unit -Tests in Go?

Wie schreibe ich Dateien in Go Language bequem? Wie schreibe ich Dateien in Go Language bequem? Mar 03, 2025 pm 05:15 PM

Wie schreibe ich Dateien in Go Language bequem?

See all articles