golang执行shell指令时报错exit 1问题及解决
作者:昵称系统有问题
这段描述主要介绍了在Go语言中使用`exec`包执行shell命令时,并,遇到错误时推荐使用`CombinedOutput`获取完整输出信息,以便于进行调试和问题定位
1、前言
ok,前面我们说过一个go执行shell指令的最佳方式,
今天这里再介绍一种方式,当你遇到执行shell报错找不到原因时可以尝试一下,
主要来自:
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. 总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
