登录
首页 >  Golang >  Go问答

执行 os/exec 时,curl 命令收到错误码 404

来源:stackoverflow

时间:2024-02-18 08:36:25 157浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《执行 os/exec 时,curl 命令收到错误码 404》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我尝试使用 os/execcurl 从私有 gitlab 存储库获取文件并获取 404 响应状态:

func test_curl(t *testing.t) {
    cmd := exec.command(
        `curl`,
        `-h`, `private-token:token`,
        `https://gitlab.some.com/api/v4/projects/23/repository/files/.gitignore/raw\?ref\=master`,
    )
    t.log(cmd.string())

    var out bytes.buffer
    cmd.stdout = &out

    err := cmd.run()
    if err != nil {
        t.fatal(err)
    }
    t.log(out.string())
}
=== run   test_curl
    t_test.go:166: /usr/bin/curl -h private-token:token https://gitlab.some.com/api/v4/projects/23/repository/files/.gitignore/raw\?ref\=master
    t_test.go:175: {"error":"404 not found"}
--- pass: test_curl (0.25s)

但是当我尝试使用来自 zsh 的相同命令时,我得到了正确的响应:

% /usr/bin/curl -h private-token:token https://gitlab.some.com/api/v4/projects/23/repository/files/.gitignore/raw\?ref\=master
.DS_Store
.vs/
.vscode/
.idea/

我认为问题出在 url 上,但不明白如何修复。


正确答案


?= 不得加引号:

cmd := exec.Command(
    `curl`,
    `-H`, `PRIVATE-TOKEN:token`,
    `https://gitlab.some.com/api/v4/projects/23/repository/files/.gitignore/raw?ref=master`,
)

exec.command 不会生成 shell,因此 shell glob 不需要转义。

今天关于《执行 os/exec 时,curl 命令收到错误码 404》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>