如何在cobra (golang)中传递标志作为参数?



我正在使用cobra创建一个CLI应用程序(app)). 我需要实现一个行为,其中我可以传递标志作为参数. 这些标志将通过exec.Command()传递给另一个应用程序。所有传递给app的标志参数必须被应用忽略本身,即不被识别为标志。

我不排除这是一种奇怪的行为。但如果有机会实现,我会很感激。

与应用程序交互的示例:

> app --help
or
> app --first --second

我希望参数(——help——first——second和所有其他参数)不作为app的标志。.

您可以在双破折号--之后传递它们,按照惯例,这表明以下标志和参数不意味着被解释为主程序的参数和标志。除非以某种方式显式地使用它们,否则它们将被忽略。例如:

if len(pflag.Args()) != 0 {
afterDash := pflag.Args()[pflag.CommandLine.ArgsLenAtDash():]
fmt.Printf("args after dash: %vn", afterDash)
}
$ go run ./cmd/tpl/ -d yaml -- --foo --bar
args after dash: [--foo --bar]

cobra正在使用pflag包https://pkg.go.dev/github.com/spf13/pflag

最新更新