我正在尝试通过exec在我的二进制文件中触发命令来获取另一个脚本的JSON输出。另一个脚本是nodejs任务检查html问题。 如果我在cli上触发nodeJS任务一切正常并且我得到了JSON输出,但是如果我在go里面发出命令我只得到:
退出状态1
我不确定问题是nodejs还是go问题,但即使nodejs发现了HTML问题,我希望能够在我的go脚本中分析JSON响应。
这是我的源代码:
out, err := exec.Command("/usr/bin/testcafe", "'chromium:headless --no-sandbox'", "--reporter json", "/data/checks.js").Output()
status := http.StatusOK
message := ""
if err != nil {
status = http.StatusNotImplemented
message = err.Error() + string(string(out[:]))
fmt.Println(message)
}
答案 0 :(得分:2)
如上所述,如果您需要从Golang的Command Exit访问Stderr,请使用:
message += string(err.(*exec.ExitError).Stderr[:])
在我的情况下,nodejs工具根据问题的数量给出了退出代码。解决了这个问题,现在运行得很好=)。
答案 1 :(得分:1)
我创建了一个用于执行shell命令的函数: https://gist.github.com/leninhasda/8f2b5cdc22677a8f2bdf2e896eb0b561
stdOut, stdErr, err := ShellExec("echo", "hello", "world")
if err != nil {
// error executing command
}
if stdErr != "" {
// shell command returned error message
}
if stdOut != "" {
// shell command returned output message
// hello world
}