如果你想在命令进行过程中捕捉终端输出,你可以使用下面的例子。它将运行给定的命令,捕获原始输出并逐行重印。如果你愿意,你可以在打印前对该行进行处理。
例子
package main
import (
"bufio"
"fmt"
"io"
"log"
"os/exec"
)
func main() {
cmd := exec.Command("gotest", "-v", "./...")
stdout, err := cmd.StdoutPipe()
if err != nil {
log.Fatal(err)
}
err = cmd.Start()
if err != nil {
log.Fatal(err)
}
buffer := bufio.NewReader(stdout)
for {
line, _, err := buffer.ReadLine()
fmt.Println(string(line))
if err == io.EOF {
break
}
}
}