如何将一个字符串解析成命令行参数的形式?我希望能够使用flag和/或pflag对该字符串进行解析。请问应该如何操作?
package main
import (
"fmt"
"os"
flag "github.com/spf13/pflag"
)
func main() {
command := `unimportant -fb "quoted string"`
var (
foo bool
bar string
)
flag.BoolVarP(&foo, "foo", "f", false, "foo")
flag.StringVarP(&bar, "bar", "b", "default", "bar")
// Parse command
os.Args = append(os.Args, "-fb", "quoted string")
flag.Parse()
fmt.Println(command)
fmt.Println("foo", foo)
fmt.Println("bar", bar)
}
flag
和pflag
都可以解析任意的argv
,请参考flag.FlagSet.Parse和pflag.FlagSet.Parse。 - erdnaxeliargv
。例如,字符串foo bar"baz" -o some \file.name".txt"
将被解析为单词foo
、barbaz
、-o
和some file.name.txt
。然后,您需要决定是否要展开通配符(您可能需要)。 - Nicholas Carey