文档: go 执行命令的5种方法 https://zhuanlan.zhihu.com/p/296409942
package main import ( "bytes" "fmt" "log" "os/exec" ) var cmd = ` echo hello echo world >&2 exit 4 ` func main() { cmd := exec.Command("sh","-c",cmd) var stdout, stderr bytes.Buffer cmd.Stdout = &stdout cmd.Stderr = &stderr err := cmd.Run() outStr, errStr := string(stdout.Bytes()), string(stderr.Bytes()) fmt.Printf("out:\n%s\nerr:\n%s\n", outStr, errStr) if err != nil { log.Fatalf("cmd.Run() failed with %s\n", err) } }
输出
out: hello err: world 2022/04/17 19:22:40 cmd.Run() failed with exit status 4 exit status 1