我正在使用github.com/spf13/cobra包来解释进程的命令行参数,我很难理解参数值是如何确定的。
我有一个工作程序(如下所示),它使用通过参数值更新的内部变量:
OptPort := 8088
rootCmd := &cobra.Command{
Use: "server",
Short: "Root command short version",
Long: "Root command long version",
}
startCmd := &cobra.Command{
Use: "start",
Short: "Start command short version",
Long: "Start command long version",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("args: " + strings.Join(args, " "))
fmt.Println("port: " + OptPort)
},
}
startCmd.Flags().IntVarP(&OptPort, "port", "p", OptPort, "Port to listen to")
rootCmd.AddCommand(startCmd)
rootCmd.Execute()我得到的输出如下:
args:
port: 8088我意识到我可以通过查询port变量来获得端口值,但我认为这些值也应该在args变量中。args变量是不是因为我做错了什么而为空?如果args变量预期为空,则args变量的用途是什么?
发布于 2016-08-04 23:48:49
args变量用于传递给特定cobra谓词的额外参数。例如,如果您希望server命令上的start谓词(例如)需要特定的配置文件,则可以简单地将其传递到like中
server start -p 8080 config.yml
并将"config.yml"放在args[0]中。
https://stackoverflow.com/questions/38730950
复制相似问题