golang exec.Command执行命令获取详细错误信息方式
更新时间:2026年06月25日 10:27:12 作者:Dorgan
这篇文章主要介绍了golang exec.Command执行命令获取详细错误信息方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
一般运行cmd命令时
使用的是:
cmd := exec.Command("sh", "-c",cmdStr)
// 执行命令并获取输出
output, err := cmd.Output()
或者
// 执行命令并获取输出的详细信息
output, err := cmd.CombinedOutput()但是我在实际使用中
运行上面的语句时,由于输入的命令不可控,有可能会有报错,那么上面的语句有些时候可以拿到报错,有些时候无法拿到报错的详细信息,所以需要改成下面的写法:
cmd := exec.Command("find","\\")
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())使用这种写法
会说明问题是什么
exit status 1: find: ‘\\': 无效的参数
而如果用最开头的那种写法,基本都只是得到:
exit status 1
从而无法知道真正发生的错误
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。


最新评论