如何在golang中将stdout的输出转换为字符串

Dea*_*ean 2 go

我有以下代码将stdout中的数据输出到文件:

cmd := exec.Command("ls","lh")
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)
defer writer.Flush()

err = cmd.Start()
if err != nil {
    panic(err)
}

go io.Copy(writer, stdoutPipe)
cmd.Wait()
Run Code Online (Sandbox Code Playgroud)

我需要将stdout的输出变为字符串值而不是文件.我如何实现这一目标?

是否有另一个函数允许我将io.Copy行更改为io.Copy(myStringVariable,stdoutPipe),因为我需要读取命令的输出并对其应用一些处理?

提前致谢

Jim*_*imB 8

你不需要管道,编写器,goroutine等.只需使用Cmd.Output

out, err := exec.Command("ls","lh").Output()
Run Code Online (Sandbox Code Playgroud)

您可以根据需要将输出转换[]byte为astringstring(out)


Ili*_*oly 5

您可以将文件设置为命令的stdout

f, err := os.Create("./out.txt")
if err != nil {
    panic(err)
}
defer f.Close()

cmd := exec.Command("ls", "-lh")
cmd.Stdout = f
cmd.Stderr = os.Stderr

if err := cmd.Run(); err != nil {
    panic(err)
}
Run Code Online (Sandbox Code Playgroud)