我正在尝试使用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'
,因为命令行是使用" "
拆分的。
是否有任何想法让它发挥作用?
答案 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如何解释引号。
这是简短的演示: