V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
sigoden
V2EX  ›  分享创造

使用 Argc 轻松处理 sh/bash 命令行参数

  •  
  •   sigoden · 2022-03-04 09:06:14 +08:00 · 1654 次点击
    这是一个创建于 776 天前的主题,其中的信息可能已经有所发展或是发生改变。

    demo

    使用 Argc 编写命令行程序,我们只需要做两件事情:

    1. 在注释中描述我们需要的选项,参数,子命令
    2. 调用如下命令委托 Argc 替我们处理命令行参数
    eval "(argc -e $0 "$@")"
    

    Argc 会为我们做如下工作:

    1. 从注释中提取参数定义
    2. 解析命令行参数
    3. 如果参数有异常,输出错误文本或帮助信息
    4. 如果一切正常,输出解析好的参数变量
    5. 如果有子命令,调用子命令函数

    我们可以很轻松地通过变量 $argc_<选项名 /参数名> 访问对应选项或参数。

    项目地址: https://github.com/sigoden/argc

    4 条回复    2022-03-05 09:00:17 +08:00
    Buges
        1
    Buges  
       2022-03-04 14:00:24 +08:00 via Android
    这个不错啊,写 shell 脚本解析复杂的参数总是很蛋疼,就缺一个类似 clap 的库。
    不过这个本身不是用 shell 写的,所以只能自用,没法用在发布的脚本里面。
    kingddc314
        2
    kingddc314  
       2022-03-04 15:25:37 +08:00
    看着很好用👍🏻
    xiaket
        3
    xiaket  
       2022-03-05 08:29:48 +08:00
    我理解你在这儿为什么要 eval, 但是我自己不太会为了命令行参数这样的需求而去做 eval.
    sigoden
        4
    sigoden  
    OP
       2022-03-05 09:00:17 +08:00
    @xiaket 如果 argc 是恶意软件,那么在调用时它就可以干坏事了,不需要在 eval 中再去干。不信任的软件有没有 eval 都不应该用它。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1594 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:00 · PVG 08:00 · LAX 17:00 · JFK 20:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.