最佳答案
我希望在 Go 中执行一个 shell 命令,并在程序中以字符串的形式获得结果输出。我看了 罗塞塔密码的版本:
package main
import "fmt"
import "exec"
func main() {
cmd, err := exec.Run("/bin/ls", []string{"/bin/ls"}, []string{}, "", exec.DevNull, exec.PassThrough, exec.PassThrough)
if (err != nil) {
fmt.Println(err)
return
}
cmd.Close()
但是,这并不能以我可以通过编程访问的方式捕获实际的标准输出或错误——这些标准仍然打印到常规的 stdout/stderr 中。我看到使用 Pipe 作为输出或者错误可以帮助其他地方,但是没有例子说明如何做到这一点。有什么想法吗?