当我运行下面的代码时:cmd := exec.Command(\'find\', \'/\', \'-maxdepth\', \'1\', \'-exec\', \'wc\', \'-c\', \'{}\', \'\\\')var out bytes.Buffercmd.Stdout = &outerr := cmd.Run()if err != nil { fmt.P...
当我运行下面的代码时:
cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\\")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Result: " + out.String())
我收到此错误:
退出状态 1
但这对于调试错误的确切原因没有帮助。
如何获得更加详细的信息?
正如 Laurent 提到的,您可以覆盖 Stderr 文件描述符以捕获 stderr 输出,以获得更好的错误消息。 CombinedOutput
如果要执行相对简单的事情,我个人更喜欢使用命令方法:
cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\\")
output, err := cmd.CombinedOutput()
if err != nil {
fmt.Println(fmt.Sprint(err) + ": " + string(output))
return
}
fmt.Println(string(output))
这是上述示例的 play.golang.org 链接: http://play.golang.org/p/z8k9zO755P