我的问题:
我想使用内置的exec包从golang代码中调用命令。对于许多外部程序,这工作得很好。但是有了 ,它似乎不太好。它总是只是返回go build
go build
exit status 2
编辑#1:在普通命令行窗口或powershell窗口中运行命令时,一切都按预期工作。
到目前为止,我尝试了什么:
设置和工作目录cmd.Path
cmd.Dir
而不是运行它,我编译了它,并将二进制文件放在正确的工作目录中go run
将两者都重定向到字节缓冲区,结果显示为空cmd.Stdout
cmd.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
我希望你对我有一些线索。提前致谢!
MM们
相关分类