Parsing bash中的选项解析器比getopts更先进
我操纵了几十个bash脚本,在这些脚本中我可能会更改选项。更改选项涉及三个操作:Parsing bash中的选项解析器比getopts更先进,parsing,bash,options,Parsing,Bash,Options,我操纵了几十个bash脚本,在这些脚本中我可能会更改选项。更改选项涉及三个操作: 更改提供给getopts的字符串以解析选项(例如,:g:h:pt) 编写影响参数的代码(opt1=$OPTARG) 更改使用功能(显示说明说明的功能) 这有点重,尤其是当你知道 /Cuth>提供了一个处理C++选项的好界面。 Bash中是否有类似于boost::program\u options的功能?使用argbash。你不会后悔的。 Argbash使用,但为您管理大部分实现,并提供跨项目的更一致的解析代码
- 更改提供给getopts的字符串以解析选项(例如,
):g:h:pt
- 编写影响参数的代码(
)opt1=$OPTARG
- 更改使用功能(显示说明说明的功能)
这有点重,尤其是当你知道
的功能?boost::program\u options
argbash-init-docker \
--opt myoption1 \
--opt-bool myoption2 \
--pos my_arg1 \
--pos my_arg2 \
parser.m4
argbash-docker \
parser.m4 \
--strip user-content \
-o parser.sh
parser.sh
脚本
source./parser.sh
if test $_arg_myoption2 = on;then
echo 'myoption2 is on'
fi
./my-script.sh --myoption2 arg1 arg2
#/垃圾箱/垃圾箱
版本=1.0
解析器_定义(){
设置REST帮助:用法缩写:true--“用法:example.sh[options][arguments]”
msg--“选项:”
旗A-A
旗子B-B
flag flag-f+f--{no-}flag--“不接受参数”
param param-p--param--“接受一个参数”
选项-o--“默认”-“不接受任何参数或一个参数”上的选项
disp:usage-h--help
disp版本--版本
}
评估“$(getoptions解析器_定义)退出1”
echo“FLAG:$FLAG,PARAM:$PARAM,OPTION:$OPTION”
printf':%s\n'$@#Rest参数
script.sh-ab-f+f--flag--no flag-p1-p2--param 3--param=4--option=5--op--ab
我不熟悉Boost的选项解析,但会提出和解决问题。特别是第一个,看起来很有希望。我肯定还有更多。你有什么兼容性要求吗?