为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
不负相思意 2022-08-24 20:08:39
我的问题:我想使用内置的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我希望你对我有一些线索。提前致谢!
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

问题就在这里:


ldflags "-s -w" 

拆分时,这将产生三个 arg,而不是两个,即 、 和 。ldflags"-s-w"


逐个构建数组元素,而不是拆分。对于 ldflags,请使用:


args:=[]string { "go",

  ...

 "ldflags",

 "-s -w",

  ...

}


查看完整回答
反对 回复 2022-08-24
  • 1 回答
  • 0 关注
  • 195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信