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

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

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

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

    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   ·   实用小工具   ·   1443 人在线   最高记录 6547   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 17:18 · PVG 01:18 · LAX 10:18 · JFK 13:18
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com