我有一个用空格分隔的字符串,在本例中是一个命令:ls -al
。
Go有一个方法exec.Command
需要接受这个命令作为多个参数,我这样称呼它:exec.Command("ls", "-al")
有没有办法获取任意字符串,用空格拆分,并将其所有值作为参数传递给方法?
答案 0 :(得分:4)
您可以使用[]T
将任何...T
作为foo...
类型的参数传递,其中foo的类型为[]T
:spec
exec.Command的类型为:
func Command(name string, arg ...string) *Cmd
在这种情况下,您必须直接传递第一个参数(名称),然后用...扩展其余参数:
args := strings.Fields(mystr) //or any similar split function
exec.Command(args[0], args[1:]...)
答案 1 :(得分:0)
我可以回答您问题的第一部分 - 请参阅strings.Fields。
答案 2 :(得分:0)
是的。一个例子:
func main() {
arguments := "arg1 arg2 arg3"
split := strings.Split(arguments, " ")
print(split...)
}
func print(args...string) {
fmt.Println(args)
}
答案 3 :(得分:0)
我最近发现了一个很好的包,可以像处理shell一样处理拆分字符串,包括处理引号等:https://github.com/kballard/go-shellquote