首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通用函数中的Golang Cobra命令标志不能从cli获取值

可能是由于以下原因导致的:

  1. 未正确定义命令标志:在使用Cobra库创建命令行应用程序时,需要正确定义命令标志。命令标志是用于接收命令行参数的变量。确保已正确定义命令标志并将其与Cobra命令绑定。
  2. 未正确解析命令行参数:在使用Cobra库时,需要在执行命令之前解析命令行参数。使用Execute()函数之前,确保调用了Parse()函数来解析命令行参数。这样才能正确获取命令标志的值。
  3. 命令标志的绑定错误:确保将命令标志正确地绑定到Cobra命令中。使用PersistentFlags()Flags()函数来定义和绑定命令标志。确保标志的名称、短名称(如果有)、默认值和描述都正确设置。
  4. 命令标志的访问方式错误:在通用函数中获取Cobra命令标志的值时,需要使用正确的访问方式。可以通过命令的上下文(cmd.Flags().GetString("flagName"))或直接访问命令标志变量(flagName := cmd.Flag("flagName").Value.String())来获取命令标志的值。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Go通过cobra快速构建命令行应用

本文主要介绍Steve Francia(spf13)大神写用于快速构建命令行程序golangcobra,基于cobra命令著名项目一只手数不过来:Docker CLI、Helm、istio、...自动添加 -h, --help等帮助性Flag 自动生成命令和Flag帮助信息 创建完全符合 POSIX Flag(标志)(包括长、短版本) 支持嵌套子命令 支持全局、本地和级联Flag 智能建议(...查看 main.go,cobra-cli为我们创建了一个cmd包并且调用了包里面的 Execute()函数 /* Copyright © 2022 NAME HERE ...我们知道在goinit()函数会在import时执行,通过 AddCommand(wgetCmd)将wegetCmd添加到结构体 Command 成员变量commands,包括后面我们编写Flag...接下来我们在结构体添加Args用于验证(限制)参数数量,在init()函数添加Flag -o用于保存下载文件地址,并通过 MarkFlagRequired约束flag参数必须输入,最后在Run调用

46910
  • Go: 常用工具库cobra简介与实践

    本文主要介绍Steve Francia(spf13)大神写用于快速构建命令行程序golangcobra,基于cobra命令著名项目一只手数不过来:Docker CLI、Helm、istio、...自动添加-h,–help等帮助性Flag 自动生成命令和Flag帮助信息 创建完全符合 POSIX Flag(标志)(包括长、短版本) 支持嵌套子命令 支持全局、本地和级联Flag 智能建议(app...# go run main.go 6.查看main.go,cobra-cli为我们创建了一个cmd包并且调用了包里面的Execute()函数 /* Copyright © 2022 NAME HERE...我们知道在goinit()函数会在import时执行,通过AddCommand(wgetCmd)将wegetCmd添加到结构体Command 成员变量commands,包括后面我们编写Flag...接下来我们在结构体添加Args用于验证(限制)参数数量,在init()函数添加Flag -o用于保存下载文件地址,并通过MarkFlagRequired约束flag参数必须输入,最后在Run调用

    47110

    go命令行库-cobra

    (man page) 命令别名,这样您就可以在破坏它们情况下进行更改 定义您自己帮助、使用等灵活性。...source ~/.bashrc Cobra使用 Cobra提供了一个生成器(cobra-cli),可以用来初始化你命令行程序。这是将 Cobra 整合到您应用程序最简单方法。...另外就是在init函数,给rootCmd添加了一个标志toggle。Execute()函数就是我们在main.go文件调用函数。现在,我们来修改一下root.go程序。让其展示我们功能。...;init函数rootCmd.AddCommand(startCmd)这行代码将startCmd作为一个命令添加到rootCmd。...如果命令没有定义一个简写“v”标志,也将添加简写“v”标志。 Run 通常是实际函数,即使用该命令时候会调用函数

    82620

    Go之现代命令行框架Cobra

    Cobra 是一个 Go 语言开发命令行(CLI)框架,它提供了简洁、灵活且强大方式来创建命令行程序。...这个函数接收两个参数:cmd *cobra.Command:指向当前正在执行命令。args []string:包含命令行参数切片。...在这个例子,Run 方法只是简单地打印了 run hugo...。定义 Execute 函数Execute 函数调用 rootCmd.Execute() 来启动命令行解析和执行过程。...to read from")父命令本地标志一般默认cobra只解析目标命令本地标志,忽略父命令本地标志,通过在父命令上启动Command.TraverseChildren 属性,Cobra...*/如果你不想把配置保存在 ~/.cobra.yaml cobra-cli 还提供了 --config 标志来指定任意目录下配置文件。到这里,常用功能就总结差不多了。

    11410

    我篡改了系统命令惊现事故,竟要扣我年终奖-Golang-cobra

    下面命令安装了cobra生成器程序和 cobra 库: $ go get github.com/spf13/cobra/cobra PS: 如果出现了golang.org/x/text库找不到之类错误...如下main.go文件调用命令入口: import "cmd" func main() { cmd.Execute() } 最后为了编码方便,在helpers.go中封装了调用外部程序和错误处理函数...设置永久选项,在root.go根命令文件init()函数: var( Verbose bool ) func init() { rootCmd.PersistentFlags().BoolVarP...$ cobra-cli add viperall 修改此子命令Run函数内容为 var viperallCmd = &cobra.Command{ Use: "viperall", Short...比如我们在version.goinit函数中将子命令添加到根命令。 创建子命令时指定子命令名称、子命令短提示、子命令调用方法。 三个重要概念,子命令、参数、选项。

    29110

    使用Go构建一个Data Thrashing CLI工具

    对你项目的根目录初始化命令是dep Init接下来会详细说明。 首先,我使用Cobra CLI为我自己CLI生成初始代码。...这是一个需要在配置文件检索到配置项,然后进行一个简单配置。 管理配置 CLI有两个状态,启动时选择其一。它有一个测试URI,CLI可以选择进行测试或不测试。一个命令被执行CLI都需要检查。...现在,我继续在init函数添加一些代码来初始化并设置环境变量默认值。...如果我设置它,If条件判断会将THRASHER_URI设置为我在代码localhost:3000设置默认值。...我要添加第一个代码是使用viper来获取URI路径,并使用get来对URI路径发起一个请求。我将它添加到verify命令指针函数

    89900

    Cobra 命令自动补全指北

    这些 CLI 工具,都是基于 Cobra[1] 库开发,命令自动补全功能也是该库提供一个功能,本篇文章就来讲讲如何使用 Cobra 实现命令自动补全。...Cobra Shell Completion Cobra 可以作为一个 Golang 包,用来构建功能强大命令行程序;同时也可以作为 CLI 工具,用来生成应用程序和命令文件。...Golang 包,还是一个 CLI 工具,可以用来生成应用程序和命令文件。...在使用 ValidArgsFunction 时,Cobra 将在解析了命令行中提供所有 flag 和参数之后才会调用您注册函数。...但不得不承认,Cobra 是一个非常好用 CLI 工具构建框架,很多流行 CLI 工具都是使用它来构建,这也是为什么使用 GO 语言编写 CLI 工具如雨后春笋般快速出现并占据了云原生工具关键位置

    2.6K20

    快速构建一个CLI小工具

    如何Golang快速构建一个CLI小工具 在现实开发过程,大家会发现很多开源框架都会有着自己一个CLI工具库来帮助开发者们通过命令方式快速达到某些目的,比如常见docker 命令。...那么在这篇文章当中,主要给大家介绍一个golang小框架,我们可以借助这个框架来快速搭建一个小CLI工具。...效果 我们这边构建了一个叫gtools小工具,用来容纳我们自已用golang开发一些小工具 >> gtools gtools is a CLI application for...使用Cobra初始化我们项目 cobra-cli init 执行完之后,我们会在本地目录看到这样结构 ├── main.go ├── cmd │ └── root.go main.go就是我们主入口了...autoSelector, 只需执行一下命令即可: cobra-cli add autoSelector 对应一个叫autoSelector.go文件就会出现在cmd目录底下,并且已经为你准备了基本命令行框架

    1.4K20

    cobra-强大CLI应用程序库

    cobra介绍 Cobra是一个用于创建强大现代CLI应用程序库,也是一个用于生成应用程序和命令文件程序。...完全兼容POSIX标志(包括短版和长版) 嵌套子命令 全局,局部和级联标志 易产生应用程序和命令cobra init appname&cobra add cmdname 明智建议(app srver...自动生成命令标志帮助 自动帮助标志识别-h,--help等等。...可选与viper紧密集成,可用于12因子应用程序 概念 Cobra建立在命令,参数和标志结构上。 命令代表动作,Args是事物,Flags是这些动作修饰符。...在以下示例,“服务器”是命令,“端口”是标志: hugo server --port=1313 在此命令,我们告诉Git克隆url内容。

    72560

    Go 优势和现状。初学者应该学习 Python 还是 Go?

    Python 已有 30 多年历史,但它受欢迎程度仍在继续增长。Python 是一门出色面向对象语言,你也可以使用函数式编程风格来编写代码。...尽管 Go 语言内置 Flag 这个 package 可以用来编写 CLI 命令,我也看了很多使用 Go 开发 CLI 项目后,注意到这些项目都没有使用内置 Flag 包,而是绝大多数使用了 spf13.../cobra[1] 或 urfave/cli[2]。...这是使用 cobra 项目列表[3],其中包括了著名项目比如 Kubernetes, Hugo, Docker,Github CLI 等都使用 cobra。...至于 urfave/cli,我看到 Jfrog CLI 在使用它,其他正在使用 urfave/cli 知名项目我并没有看到像 cobra 那样列表。

    1.4K20

    命令行工具开发 cobra 示例

    Cobra 是 Go 语言中一个流行库,用于创建命令行应用程序。它提供了一个易于使用框架,帮助开发者快速构建强大且灵活 CLI(Command-Line Interface)工具。...Cobra 主要特点包括命令层次结构、命令标志(flags)和参数处理、自动生成帮助文档等。...例如,一个 Git 工具 git commit 和 git push 可以被实现为 commit 和 push 子命令。每个命令都有一个名字、简短描述、长描述、以及一个执行函数。...标志(Flags):Cobra 与 pflag(Go 标准库 flag 包增强版)集成,用于处理命令标志。每个命令可以定义自己标志,用户可以在命令行中使用这些标志来修改命令行为。...命令层次结构:Cobra 支持创建复杂命令结构,允许命令具有子命令,并且子命令也可以进一步有自己命令。这使得开发者能够构建功能丰富 CLI 工具。

    13410

    Cobra 使用简要(万字带你轻松上手 Cobra 使用)

    命令是整个命令行应用程序入口,可以包含多个子命令和相关参数和标志。 定义命令和子命令:使用 Cobra 提供 API 定义命令和子命令,并为每个命令定义相应执行函数。...解析命令行参数:当用户在命令输入命令时,Cobra 会解析用户输入命令、参数和标志,并调用相应执行函数来处理。...如何处理命令行参数和标志 Cobra 提供了一种简单而强大方式来处理命令行参数和标志。您可以通过 Cobra 提供 API 来定义参数和标志,并在执行函数获取和使用它们。...在执行函数,我们通过 cmd.Flags().GetString("message") 来获取标志值,并打印输出。...自定义函数和选项 除了内置命令和选项外,Cobra 还允许我们定义自定义函数和选项,以满足特定需求。例如,您可以定义一个自定义函数来实现某个特定功能,并在需要时在命令调用该函数

    2.5K10

    go-admin在线开发平台学习-2

    首先对项目所使用第三方库进行分析,了解作者使用库是否是通用官方库可以有助于我们更快地阅读程序。接着对项目的main()方法进行分析,因为程序使用cli方式启动,对cli不同命令进行分析。...go-admin中使用第三方库 cobra 强大cli封装,支持命令嵌套 cast 简单安全类型转换 casbin 轻量级开源访问控制框架,采用了元模型设计思想,支持多种经典访问控制方案,...不同命令有不同参数进行配置 命令代码在根目录cmd下分文件保存,通过cobra.go作为统一入口 corbora使用遵循一个通用规则。...本项目所使用方式也类似,每一个命令都 定义一个文件夹,分别管理自己命令内容,最后通过cobra.go这个上层入口暴露出来。...是一个附加头中间件函数

    91340

    万字带你轻松上手 Cobra 使用

    命令是整个命令行应用程序入口,可以包含多个子命令和相关参数和标志。定义命令和子命令:使用 Cobra 提供 API 定义命令和子命令,并为每个命令定义相应执行函数。...解析命令行参数:当用户在命令输入命令时,Cobra 会解析用户输入命令、参数和标志,并调用相应执行函数来处理。...如何处理命令行参数和标志Cobra 提供了一种简单而强大方式来处理命令行参数和标志。您可以通过 Cobra 提供 API 来定义参数和标志,并在执行函数获取和使用它们。...在执行函数,我们通过 cmd.Flags().GetString("message") 来获取标志值,并打印输出。...自定义函数和选项除了内置命令和选项外,Cobra 还允许我们定义自定义函数和选项,以满足特定需求。例如,您可以定义一个自定义函数来实现某个特定功能,并在需要时在命令调用该函数

    70670

    go-admin在线开发平台学习-2

    接着对项目的main()方法进行分析,因为程序使用cli方式启动,对cli不同命令进行分析。基于此俩点开始工作。...go-admin中使用第三方库 cobra 强大cli封装,支持命令嵌套 cast 简单安全类型转换 casbin 轻量级开源访问控制框架,采用了元模型设计思想,支持多种经典访问控制方案,如基于角色访问控制...不同命令有不同参数进行配置 命令代码在根目录cmd下分文件保存,通过cobra.go作为统一入口 ?...本项目所使用方式也类似,每一个命令都 定义一个文件夹,分别管理自己命令内容,最后通过cobra.go这个上层入口暴露出来。...是一个附加头中间件函数

    57330

    每日一库:cobra

    以下是 cobra主要特性和用法示例: 主要特性 1.子命令支持:cobra 允许您创建包含多个子命令命令行工具。这使得您可以组织和管理大型 CLI 应用程序。...2.灵活标志和参数定义:您可以轻松地定义命令行工具标志和参数,并指定其名称、缩写、默认值、描述等属性。3.自动生成帮助信息:cobra 自动为您生成详细帮助文档,包括用法示例、标志和参数描述。...用户可以通过在命令后面加上 --help 标志来查看帮助信息。4.支持嵌套命令cobra 支持多级嵌套命令,使您可以构建具有复杂层次结构 CLI 工具。...7.支持 Bash 自动补全:cobra 提供了 Bash 自动补全支持,使得用户可以更便捷地使用您 CLI 工具。...这只是一个简单示例,cobra 可以轻松处理更复杂命令行接口,包括添加标志、参数、子命令和自定义用法信息。

    21420

    使用Cobra框架完成pod增删改查

    关于cobra框架 Cobra 是一个用 Go 语言编写命令行界面 (CLI) 应用程序开发框架。...它被广泛用于创建具有复杂命令结构应用程序,例如支持嵌套命令、全局和局部标志、以及自动生成帮助和文档应用程序。由Go团队成员spf13为hugo创建,并被很多流行Go项目广泛采用。...全局、局部和持久标志:你可以为命令定义全局标志(对所有命令有效)或局部标志(仅对特定命令有效),以及持久标志(对命令和它所有子命令有效)。...使用cobra完成k8s增删改查 使用Cobra完成 K8sPod操作,你首先需要安装Cobra并初始化一个新项目,然后编写逻辑来与 Kubernetes API 交互。...,需要在各自命令文件实现类似的逻辑,与 Kubernetes API 进行交互,执行相应操作。

    17310

    怎样上手cobra

    cobra支持功能非常完善,比如:help、子命令标志等,它使用还是非常简单,下面我们一起看下。一、命令组成结构在正式开始介绍cobra来,我们先来了解下命令组成结构。...是命令(也可以认为是git命令),代表要执行动作git@github.com:spf13/cobra.git 是参数(argument),代表操作对象--depth=1 是标志(flag),它是对命令补充...、修饰从上面我们可以看出一个命令命令、参数、标志组成,cobra例外,它也围绕这三者展开。...如果指定可执行文件名,生成可执行文件并不是命令哦。三、参数(arg)前面我们构建了hello命令,但是它没有参数,我们来添加一个参数。...go run main.go dmy -c=hello.yaml 将会看到,makefile复制代码hello执行前执行Hello: dmyhello执行后执行config: hello.yaml我们能从命令获取到配置文件

    9710
    领券