我记得在某个地方看到过一个bash
脚本case
,该脚本使用和shift
浏览位置参数列表,遇到参数时解析带有参数的标志和选项,并在解析后将其删除以仅保留裸参数,然后由其余的参数处理。脚本。
例如,在解析的命令行时cp -R file1 -t /mybackup file2 -f
,它将首先遍历参数,认识到用户已请求通过进入目录,通过来-R
指定目标,-t /mybackup
并通过来强制复制-f
,然后将其从参数列表中删除,从而该程序file1 file2
作为剩余参数进行处理。
但是我似乎无法记住/找到我所看到的任何脚本。我只是想能够做到这一点。我一直在各地搜索,并附加了我检查过的相关页面列表。
该网站上的一个问题专门询问了“顺序无关的选项”,但是单个答案和该问题的答案都没有考虑到像上面这样的情况,即选项与普通参数混合在一起,我认为这是该人特别提及与订单无关的选项的原因。
由于bash
的内置getopts
似乎停在第一个非选项参数上,因此它似乎不足以解决问题。这就是Wooledge BashFAQ的页面(见下文)解释如何重新排列参数的原因。但是我想避免创建多个数组,以防参数列表很长。
由于shift
不支持从参数列表的中间弹出单个参数,因此我不确定实现我所要求的直接方法是什么。
我想听听是否有人有解决方案,可以从参数列表的中间删除参数,而无需创建一个新的数组。
我已经看过的页面:
- http://mywiki.wooledge.org/ComplexOptionParsing#Rearranging_arguments
- http://mywiki.wooledge.org/BashFAQ/035
- 在bash shell脚本中使用getopts获取长和短命令行选项
- http://wiki.bash-hackers.org/scripting/posparams
- http://wiki.bash-hackers.org/howto/getopts_tutorial
- bash参数在$ @中的情况
- 在bash脚本中实现顺序独立选项的规范方法是什么?
- 如何处理Shell脚本中的开关?