当我运行下面的代码:
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())
我收到这个错误:
exit status 1
但是,这对调试错误的确切原因没有帮助
解决方案是使用Command对象的Stderr属性.这可以这样做:
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: ‘\\’: 无效的参数
本文介绍了一种在Go语言中使用exec.Command时遇到的问题及解决方法。通过正确配置Command对象的Stderr属性来捕获并解析错误信息,帮助开发者更好地定位问题所在。
2653

被折叠的 条评论
为什么被折叠?



