shell参数解析

shell中的参数大多是按顺序解析.然后${1..n}引用
在使用中其实有很多地方不是很方便,比如,对调用时参数位置的强依赖性等.
像go语言有flag包可以提供较为完备的参数解析功能.
shell就只能source了.
个人比较常用的套路就是eval+awk 完成字符串解析以及赋值.
直接上代码.

Parse_args(){
    local args="$@"
    local arg_name="operation|module|env"
    eval $(awk -vArgs_name="$arg_name" -vArgs="$args" '
        BEGIN{
            split(Args_name,arg_array,"|")
            for(index in arg_array){
                match(Args,"-"substr(arg_array[index],0,1)" ?([^ -]+)",tmp_array)
                print arg_array[index]"="tmp_array[1]
            }
        }
    ')
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载 原文的排版和内容都更加友好,并且详细,我只是在这里贴出了一部分留作自己以后参考和学习,如希望更详细了解AWK...
    XKirk阅读 8,488评论 2 25
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,184评论 2 33
  • 概述 首先,咱们来了解一下,什么是Shell。操作系统内核给我们提供了各种接口,同时也提供了各种用户层的库,理论上...
    keysaim阅读 5,271评论 0 0
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 13,447评论 3 53
  • 为何叫做 shell ? shell prompt(PS1) 与 Carriage Return(CR) 的关系?...
    Zero___阅读 8,365评论 3 49