shell参数解析

2017-01-03  本文已影响0人  我是一隻羊

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]
            }
        }
    ')
}
上一篇 下一篇

猜你喜欢

热点阅读