golang执行shell指令时报错exit 1


文章目录

1、前言

ok,前面我们说过一个go执行shell指令的最佳方式,今天这里再介绍一种方式,当你遇到执行shell报错找不到原因时可以尝试一下,主要来自:https://stackoverflow.com/questions/18159704/how-to-debug-exit-status-1-error-when-running-exec-command-in-golang/18159705

2. 代码

cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\\")
var out bytes.Buffer
var stderr bytes.Buffer
cmd.Stdout = &out
cmd.Stderr = &stderr
err := cmd.Run()
if err != nil {
fmt.Println(fmt.Sprint(err) + ": " + stderr.String())
return
}
fmt.Println("Result: " + out.String())

3. 区别

从名字就可以大致猜出来,run、CombinedOutput分别是命令执行后的运行以及组合的结果,所以CombinedOutput会将错误信息和执行结果组合起来,所以如果报错的话通过CombinedOutput可以打印出错误信息,而运行run的话则需要单独捕获错误信息进行打印(还有一个cmd.Output,感兴趣的可以试一下)。