我正在尝试创建一个获取参数的脚本(用Perl编写).调用应如下所示:
./script [action] --option1 --option2 ... --optionK
Run Code Online (Sandbox Code Playgroud)
我使用GetOptions:Long模块.我也用它$ARG[0]来获取动作.例:
./script report --color black --version 19.4
Run Code Online (Sandbox Code Playgroud)
现在我想向用户提供插入他想要的任何命令的权力(例如,它可以插入带参数的另一个脚本).我这样做是这样的:用户可以在命令行参数的末尾(仅)插入他想要的任何东西,例如:
./script report --color black --version 19.4 more and more --info 551_5 from --the user
Run Code Online (Sandbox Code Playgroud)
我想解析这个数组@ARGV并将其他信息插入变量:
$additional = "more and more --info 551_5 from --the user"
Run Code Online (Sandbox Code Playgroud)
我发现在使用之后GetOptions,它将$ARGV[0]从@ARGV数组中删除这些选项(不包括).问题是,我真的不知道如何从阵列中获取附加信息.也许我应该添加一个额外的选项,如下所示:
./script report --color black --version 19.4 --additional more and more --info 551_5 from --the user
Run Code Online (Sandbox Code Playgroud)
把一切都搞定additional.但这种方式,我有一个问题-它将把--info和--the作为参数.
我该如何解决这个问题?
编辑:我看到pass_through可以使用.但是如果用户有一个类似于我可用选项的选项呢?它可能会有一些问题.是否可以像字符串一样处理它?同样,我将不得不解析@ARGV并删除$ARGV[0](动作).
编辑-2:该--方法将起作用.但我觉得这是一种解决方法,而不是解决这个问题的正确方法.必须有一个更清洁的方法来做到这一点.也许改成不同的模块?
您可以使用它--来分隔其他参数:./script --option1 --option2 -- --userOption1 --userOption2
https://metacpan.org/pod/Getopt::Long#Mixing-command-line-option-with-other-arguments
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |