Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > golang执行shell指令时报错exit 1

golang执行shell指令时报错exit 1问题及解决

作者:昵称系统有问题

这段描述主要介绍了在Go语言中使用`exec`包执行shell命令时,并,遇到错误时推荐使用`CombinedOutput`获取完整输出信息,以便于进行调试和问题定位

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,感兴趣的可以试一下)。

4. 总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文