• gcmd
    • 参数/选项读取
    • 回调函数绑定

    gcmd

    gcmd模块提供了对命令行参数、选项的读取功能,以及对应参数的回调函数绑定功能。

    使用方式

    1. import "github.com/gogf/gf/g/os/gcmd"

    接口文档

    https://godoc.org/github.com/gogf/gf/g/os/gcmd

    参数/选项读取

    参数是从索引0开始的字符串数组,选项是以”--“或者”-“开始的KV键值对数据。

    假如执行命令如下:

    1. ./binary start daemon --timeout=60 --logpath=/home/www/log
    1. 获取执行参数start、daemon
      1. // start
      2. gcmd.Value.Get(0)
      3. // daemon
      4. gcmd.Value.Get(1)
    1. 获取执行选项timeout、logpath
      1. // timeout
      2. gcmd.Option.Get("timeout")
      3. // logpath
      4. gcmd.Option.Get("logpath")

    执行选项通过给定键名获取,并且执行选项的格式可以是--键名=键值(两个”-“符号),也可以是-键名=键值(一个”-“符号)。

    回调函数绑定

    对于命令行的可执行程序来讲,需要根据执行参选定位到对应的入口函数进行处理,gcmd提供了以下方法来实现:

    1. func AutoRun() error
    2. func BindHandle(cmd string, f func()) error
    3. func RunHandle(cmd string) error
    1. BindHandler绑定执行参数对应的回调函数,执行参数索引为0,回调函数参数类型为func()
    2. RunHandler运行指定执行参数的回调函数;
    3. AutoRun根据执行参数[0]自动运行对应注册的回调函数;

    使用示例:

    1. package main
    2. import (
    3. "fmt"
    4. "github.com/gogf/gf/g/os/gcmd"
    5. )
    6. func help() {
    7. fmt.Println("This is help.")
    8. }
    9. func test() {
    10. fmt.Println("This is test.")
    11. }
    12. func main() {
    13. gcmd.BindHandle("help", help)
    14. gcmd.BindHandle("test", test)
    15. gcmd.AutoRun()
    16. }

    编译成二进制文件后进行执行测试:

    1. $ go build main.go
    2. $ ./main test
    3. This is test.
    4. $ ./main help
    5. This is help.
    6. $ ./main
    7. $