获取标志值失败
Failed to get flag value
我使用 https://github.com/spf13/cobra 库创建了一个小型 Go 应用程序。
我创建了一个新标志,-t
或 --token
,当我传递这个参数时,我希望应用程序打印它。
这就是我所做的:
func init() {
fmt.Println("[*] Inside init()")
var token string
rootCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "Service account Token (JWT) to insert")
fmt.Println(token)
}
但是当我 运行 这样的应用程序时它不会打印它:
.\consoleplay.exe --token "hello.token"
如何打印标志的值。
您不能在init()
函数中打印令牌的值,因为init()
函数在运行 时间执行,这是第一次调用包时。该值尚未分配。
所以,你必须全局声明变量,并在rootCmd
命令的Run
方法中使用它。
var token string
var rootCmd = &cobra.Command{
Use: "consoleplay",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println(token)
},
}
func init() {
rootCmd.Flags().StringVarP(&token, "token", "t", "", "usage")
}
我使用 https://github.com/spf13/cobra 库创建了一个小型 Go 应用程序。
我创建了一个新标志,-t
或 --token
,当我传递这个参数时,我希望应用程序打印它。
这就是我所做的:
func init() {
fmt.Println("[*] Inside init()")
var token string
rootCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "Service account Token (JWT) to insert")
fmt.Println(token)
}
但是当我 运行 这样的应用程序时它不会打印它:
.\consoleplay.exe --token "hello.token"
如何打印标志的值。
您不能在init()
函数中打印令牌的值,因为init()
函数在运行 时间执行,这是第一次调用包时。该值尚未分配。
所以,你必须全局声明变量,并在rootCmd
命令的Run
方法中使用它。
var token string
var rootCmd = &cobra.Command{
Use: "consoleplay",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println(token)
},
}
func init() {
rootCmd.Flags().StringVarP(&token, "token", "t", "", "usage")
}