golang 关于命令行处理开发中也是经常用到的,主要应用cli工具,通过示例了解一下。
示例:通过cli的name返回
package main
import (
"fmt"
"os"
"github.com/urfave/cli"
)
func main() {
app := cli.NewApp() //新建一个app
app.Name = "hello" //app name
app.Usage = "send one's respects to" //使用注释
app.Action = func(c *cli.Context) error { //具体行为动作
fmt.Println("Hello friend!")
return nil
}
app.Run(os.Args) //传入参数
}
执行:
#go install
#hello
Hello friend!
示例:接收传参
package main
import (
"fmt"
"os"
"github.com/urfave/cli"
)
func main() {
app := cli.NewApp()
app.Action = func(c *cli.Context) error {
fmt.Printf("Hello %q", c.Args().Get(0)) //通过上下文接收参数
return nil
}
app.Run(os.Args)
}
执行:使用flag判断传入参数
go run test.go 123
结果:
Hello "123"
示例:
package main
import (
"os"
"fmt"
"github.com/urfave/cli"
)
func main() {
var language string
app := cli.NewApp()
app.Flags = []cli.Flag {
cli.StringFlag{
Name: "language,l",
Value: "english",
Usage: "language for the greeting",
Destination: &language,
},
}
app.Action = func(c *cli.Context) error {
name := "friend"
if c.NArg() > 0 {
name = c.Args()[0]
}
if language == "spanish" {
fmt.Println("Hola", name)
} else {
fmt.Println("Hello", name)
}
return nil
}
app.Run(os.Args)
}
执行:
go run test.go -language=spanish 123
结果:
Hola 123
示例:
package main
import (
"os"
"sort"
"github.com/urfave/cli"
)
func main() {
app := cli.NewApp()
app.Flags = []cli.Flag {
cli.StringFlag{
Name: "lang, l",
Value: "english",
Usage: "Language for the greeting",
},
cli.StringFlag{
Name: "config, c",
Usage: "Load configuration from `FILE`",
},
}
app.Commands = []cli.Command{
{
Name: "complete",
Aliases: []string{"c"},
Usage: "complete a task on the list",
Action: func(c *cli.Context) error {
return nil
},
},
{
Name: "add",
Aliases: []string{"a"},
Usage: "add a task to the list",
Action: func(c *cli.Context) error {
return nil
},
},
}
sort.Sort(cli.FlagsByName(app.Flags))
sort.Sort(cli.CommandsByName(app.Commands))
app.Run(os.Args)
}
小结:cli工具用法比较简单,可以传参,调用执行命令等。
更多内容请关注头条号每日编程,每天进步一点。