Golang:用它的参数

时间:2016-07-14 13:08:59

标签: git go command-line command

我正在尝试使用go执行命令。

executableCommand := strings.Split("git commit -m 'hello world'", " ")
executeCommand(executableCommand[0], executableCommand[1:]...)
cmd := exec.Command(command, args...)

但这是我得到的

error: pathspec 'world"' did not match any file(s) known to git.
exit status 1

这是因为-m仅获取'hello而不是'hello world',因为命令行是使用" "拆分的。

是否有任何想法让它发挥作用?

2 个答案:

答案 0 :(得分:13)

如果没有解释引号等的shell的帮助,你想要的实际上很难实现。所以你可以使用shell来运行你的命令。

{{1}}

答案 1 :(得分:2)

如何逃避引号,然后使用strconv.Unquote函数?

executableCommand := strings.Split(strconv.Unquote("git commit -m \"hello world\"", " "))
executeCommand(executableCommand[0], executableCommand[1:]...)
cmd := exec.Command(command, args...)

当然,这将取决于shell如何解释引号。

这是简短的演示:

https://play.golang.org/p/V6uqWcczGV