shell中的參數(shù)大多是按順序解析.然后${1..n}引用
在使用中其實(shí)有很多地方不是很方便,比如,對調(diào)用時(shí)參數(shù)位置的強(qiáng)依賴性等.
像go語言有flag包可以提供較為完備的參數(shù)解析功能.
shell就只能source了.
個(gè)人比較常用的套路就是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]
}
}
')
}