咕噜咕噜。命令问题:始终失败,退出代码为 2

我的问题:

我想使用内置的exec包从golang代码中调用命令。对于许多外部程序,这工作得很好。但是有了 ,它似乎不太好。它总是只是返回go buildgo buildexit status 2

编辑#1:在普通命令行窗口或powershell窗口中运行命令时,一切都按预期工作。

到目前为止,我尝试了什么:

  • 设置和工作目录cmd.Pathcmd.Dir

  • 而不是运行它,我编译了它,并将二进制文件放在正确的工作目录中go run

  • 将两者都重定向到字节缓冲区,结果显示为空cmd.Stdoutcmd.Stderr

  • 尝试使用绝对路径而不是相对路径


代码:

parts := strings.Split(fmt.Sprintf(`go build -o %s -a -v -work -x -ldflags "-s -w" %s`, artifact, bd.CloneDir), " ")

cmd := exec.Command(parts[0], parts[1:]...)

messageCh <- fmt.Sprintf("build command to be executed: '%s'", cmd.String())

result, err := cmd.CombinedOutput()

if err != nil {

    messageCh <- fmt.Sprintf("build step '%s': failed because %s", buildStep, err.Error())

    return "", err

}

messageCh <- fmt.Sprintf("build step '%s': successful with content:\n%s", buildStep, string(result))

输出:


build command to be executed: 'C:\Go\bin\go.exe build -o data/2/1619456424/artifact/github-public-golang-test-repo -ldflags "-s -w" data/2/1619456424/clone/main.go'

build step 'build': failed because exit status 2

我希望你对我有一些线索。提前致谢!


不负相思意
浏览 196回答 1
1回答

MM们

问题就在这里:ldflags "-s -w"&nbsp;拆分时,这将产生三个 arg,而不是两个,即 、 和 。ldflags"-s-w"逐个构建数组元素,而不是拆分。对于 ldflags,请使用:args:=[]string { "go",&nbsp; ...&nbsp;"ldflags",&nbsp;"-s -w",&nbsp; ...}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go