Go – Schreiben in Stdin für externe Befehle mit mehreren Eingabefeldern
Beim Ausführen externer Befehle aus einem Go-Programm kann es erforderlich sein, dies zu tun Geben Sie Eingaben für die Standardeingabe des Befehls (stdin) ein. Wenn der externe Befehl jedoch mehrere Eingabefelder erfordert, kann es schwierig sein, zu bestimmen, wie diese am effizientesten und zuverlässigsten bereitgestellt werden können.
Im bereitgestellten Beispiel wird der Anmeldebefehl ausgeführt und vom Benutzer erwartet um zwei Felder manuell einzugeben: einen Benutzernamen und ein Passwort. Um diese Eingaben programmgesteuert bereitzustellen, ist es möglich, einen Bytepuffer zu verwenden.
Der Typ bytes.Buffer in Go kann verwendet werden, um eine Folge von Bytes im Speicher zu halten und zu manipulieren. Indem Sie den Benutzernamen und das Passwort in den Puffer schreiben und dann das Feld login.Stdin auf den Puffer setzen, ist es möglich, die Eingaben für den Befehl ohne Benutzerinteraktion bereitzustellen.
Ein Codeausschnitt, der diesen Ansatz veranschaulicht:
<code class="go">import ( "bytes" "fmt" "os" "os/exec" ) func main() { cmd := "login" // Prepare the byte buffer with username and password var b bytes.Buffer username := "exampleUsername" password := "examplePassword" b.Write([]byte(fmt.Sprintf("%s\n%s\n", username, password))) // Execute the command with stdin set to the buffer login := exec.Command(cmd) login.Stdin = &b login.Stdout = os.Stdout login.Stderr = os.Stderr err := login.Run() if err != nil { fmt.Fprintln(os.Stderr, err) } }</code>
Durch die Verwendung dieser Technik kann das Go-Programm automatisch die notwendigen Eingaben für den externen Befehl bereitstellen, wodurch der Ausführungsprozess rationalisiert wird und manuelle Benutzereingaben überflüssig werden.
Das obige ist der detaillierte Inhalt vonWie stelle ich in Go mehrere Eingabefelder für externe Befehle bereit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!