一、运行环境
go环境
获取github.com/spf13/cobra
二、示例
例子比较简单,直接看代码
package main
import (
"fmt"
"os"
"github.com/spf13/cobra"
)
#由于flag标志是在不同的位置定义和使用的,因此我们需要在外部定义一个具有正确范围的变量来分配要使用的标志
#定义标志
var name string
var age int
var RootCmd = &cobra.Command{
Use: "testCobra",
Short: "A test demo",
Long: `Demo is a test appcation for print things`,
Run: func(cmd *cobra.Command, args []string) {
if len(name) == 0 {
fmt.Println("no name")
return
}
Show(name, age)
},
}
func Execute() {
if err := RootCmd.Execute(); err != nil {
fmt.Println(err)
os.Exit(-1)
}
}
func init() {
#分配标志flag
RootCmd.Flags().StringVarP(&name, "name", "n", "", "person's name")
RootCmd.Flags().IntVarP(&age, "age", "a", 0, "person's age")
}
func main() {
#创建并执行
Execute()
}
func Show(name string, age int) {
#命令执行过程
fmt.Printf("My Name is %s, My age is %d\n", name, age)
}
保存文件,这里文件名命名为codra.go
运行程序
go run cobra.go -n ccc -a 28
#运行结果
#My Name is ccc, My age is 28
看到如上运行结果表示成功执行。
为了实现直接运行类似于git,node这种命令格式,接下来进行编译
go build cobra.go
运行成功后,将在cobra.go位置生成执行文件cobra
接着将执行文件cobra拷贝到/usr/local/bin目录下
cp -f cobra /usr/local/bin
然后再运行
cobra -n abc -a 26
#运行结果
#My Name is abc, My age is 26