我的問題:我想使用內(nèi)置的exec包從golang代碼中調(diào)用命令。對于許多外部程序,這工作得很好。但是有了 ,它似乎不太好。它總是只是返回go buildgo buildexit status 2編輯#1:在普通命令行窗口或powershell窗口中運(yùn)行命令時,一切都按預(yù)期工作。到目前為止,我嘗試了什么:設(shè)置和工作目錄cmd.Pathcmd.Dir而不是運(yùn)行它,我編譯了它,并將二進(jìn)制文件放在正確的工作目錄中g(shù)o run將兩者都重定向到字節(jié)緩沖區(qū),結(jié)果顯示為空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貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個贊
問題就在這里:
ldflags "-s -w"
拆分時,這將產(chǎn)生三個 arg,而不是兩個,即 、 和 。ldflags"-s-w"
逐個構(gòu)建數(shù)組元素,而不是拆分。對于 ldflags,請使用:
args:=[]string { "go",
...
"ldflags",
"-s -w",
...
}
- 1 回答
- 0 關(guān)注
- 242 瀏覽
添加回答
舉報
0/150
提交
取消