-2

我试图在我的 go 二进制文件中通过 exec 触发一个命令,以获取另一个脚本的 JSON 输出。另一个脚本是检查 html 问题的 nodejs 任务。如果我在 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)
}
4

2 回答 2

2

如上所述,如果您需要从 Golang 中的命令出口访问 Stderr,请使用:

message += string(err.(*exec.ExitError).Stderr[:])

就我而言,nodejs 工具根据问题的数量给出了退出代码。解决了这个问题,它现在可以完美运行 =)。

于 2018-02-11T16:26:51.187 回答
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
}
于 2018-02-12T11:29:33.563 回答