【发布时间】:2022-08-02 20:20:57
【问题描述】:
我对 Go 非常陌生;作为一些创新时间的一部分,我决定尝试一下。我想做的是运行一些命令,并处理它们的输出。
我想出了这个函数来运行命令:
func IssueCommand(command string, args []string) ([]string, error) {
cmd := exec.Command(command, args[0:len(args)]...)
stdout, err := cmd.StdoutPipe()
err = cmd.Start()
if err != nil {
return nil, err
}
defer cmd.Wait()
buff := bufio.NewScanner(stdout)
var returnText []string
for buff.Scan() {
returnText = append(returnText, buff.Text())
}
return returnText, nil
}
我想运行这个 git 命令:
git -C /something/something rev-list --count --date=local --all --no-merges
但是,结果我一直得到一个空数组。我尝试像这样调用函数:
args := [7]string{\"-C \", path, \"rev-list\", \"--count\", \"--date=local\", \"--all\", \"--no-merges\"}
result, err := IssueCommand(\"git\", args[0:len(args)])
还尝试修改 IssueCommand 函数以将字符串作为参数;我这样称呼它:
cmd := \"-C \" + path + \" rev-list --count --date=local --all --no-merges\"
result, err := IssueCommand(\"git\", cmd)
我两次都得到了一个空数组。它确实捕获了 ls 或 pwd 等命令的输出。
同样,我只是想感受一下 Go,我会使用 RTFM,但我现在时间有限。
标签: go