Dans golang comment puis-je écrire la sortie standard d'un exec.Cmd pour un fichier?
Je suis en train d'exécuter une commande shell, capture stdout et d'écrire que la sortie vers un fichier. Cependant, il me semble qu'il manque quelques étapes, comme le fichier que je suis en train d'écrire est vide lorsque le programme existe. Comment puis-je prendre la sortie standard de la commande et de l'écrire dans un fichier?
package main
import (
"bufio"
"io"
"os"
"os/exec"
)
func main() {
cmd := exec.Command("echo", "'WHAT THE HECK IS UP'")
//open the out file for writing
outfile, err := os.Create("./out.txt")
if err != nil {
panic(err)
}
defer outfile.Close()
stdoutPipe, err := cmd.StdoutPipe()
if err != nil {
panic(err)
}
writer := bufio.NewWriter(outfile)
err = cmd.Start()
if err != nil {
panic(err)
}
go io.Copy(writer, stdoutPipe)
cmd.Wait()
}
Vous devez vous connecter pour publier un commentaire.
Vous devez rincer à l'écrivain. Ajoutez la ligne suivante:
Grâce à KirkMcDonald sur le
#go-nuts
canal irc, j'ai résolu ce problème en attribuant le fichier de sortie àcmd.Stdout
, ce qui signifie que stdout écrit directement dans le fichier. Il ressemble à ceci:Vous pouvez également utiliser:
qui va rediriger tous les cmd sortie pour le système d'exploitation standard de sortie.