Maison > développement back-end > Golang > le corps du texte

Comment fournir par programme plusieurs champs de saisie à une commande externe dans Go ?

Susan Sarandon
Libérer: 2024-10-28 13:43:02
original
579 Les gens l'ont consulté

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

Écriture dans STDIN de commandes externes dans Go

Dans Go, lors de l'exécution de commandes externes, il est souvent nécessaire de fournir une entrée via STDIN. Cet article explore une technique pour écrire une entrée dans STDIN lors de commandes nécessitant plusieurs champs de saisie.

Considérons une commande qui demande un nom d'utilisateur et un mot de passe de manière séquentielle, comme la commande "login". Pour fournir ces entrées par programme, nous devons écrire dans le STDIN de la commande.

L'approche initiale consistait à gérer manuellement les champs de saisie comme le montre le code suivant :

<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>
Copier après la connexion

Cependant , cette méthode ne permet pas la saisie par programme. La solution réside dans l’utilisation d’un bytes.Buffer pour assembler l’entrée. Voici un code amélioré :

<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>
Copier après la connexion

Le bytes.Buffer agit comme un tampon de caractères. En écrivant le nom d'utilisateur et le mot de passe séparés par des caractères de nouvelle ligne, nous construisons essentiellement une séquence d'entrées que la commande externe lira à son tour. Le champ Stdin de la commande se voit attribuer le tampon, garantissant que les entrées sont introduites dans le processus de la commande.

Cette approche permet une saisie automatisée des commandes externes avec plusieurs champs de saisie, simplifiant l'interaction entre Go et d'autres commandes. outils de ligne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!