首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用exec.Command()运行"git“

无法使用exec.Command()运行"git“
EN

Stack Overflow用户
提问于 2022-08-17 13:39:20
回答 1查看 64关注 0票数 1

我想运行exec.Command("git", "config", "--global", "user.name")并读取输出。

在windows上,单词"git"转换为git路径(C:\Program Files\...\git.exe)。然后尝试运行C:\Program (这不是一个可执行文件的路径)。

我试着转义这个空间,我试着在路径周围添加括号,或者只在空间周围加上括号并将它们转义。什么都没用。

代码语言:javascript
复制
arg0 := "config"
arg1 := "--global"
arg2 := "\"user.name\""
bcmd := exec.Command("git", arg0, arg1, arg2)
var stdout bytes.Buffer
bcmd.Stdout = &stdout
err := bcmd.Run() 

我试过加括号,但没有用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-17 14:05:20

您不应该为arg2使用引号。至于阅读输出,则取决于您通过阅读所理解的内容。输出将被写入缓冲区,在您的情况下,缓冲区是stdout。您可以使用stdout.Bytes()获得输出的字节,如果您想要实际的string (我假设您确实想要),可以使用string(stdout.Bytes())将其转换为string

代码语言:javascript
复制
package main

import (
    "bytes"
    "fmt"
    "log"
    "os/exec"
)

func main() {
    bcmd := exec.Command("git", "config", "--global", "user.name")
    var stdout bytes.Buffer
    bcmd.Stdout = &stdout
    err := bcmd.Run()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf(string(stdout.Bytes()))
}

还有另一种更简单的方法来使用Output()来做同样的事情。

代码语言:javascript
复制
package main

import (
    "fmt"
    "log"
    "os/exec"
)

func main() {
    outputBytes, err := exec.Command("git", "config", "--global", "user.name").Output()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf(string(outputBytes))
}

两者都将打印您的git用户名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73389511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档