perl - 在 GetOptions 中插入和使用未知选项
问题描述
我正在尝试创建一个获取参数的脚本(用 Perl 编写)。调用应如下所示:
./script [action] --option1 --option2 ... --optionK
我GetOptions:Long
为此使用模块。我也使用$ARG[0]
来获得行动。例子:
./script report --color black --version 19.4
现在我想赋予用户插入他想要的任何命令的权力(例如,它可以插入另一个带参数的脚本)。我想这样做:用户可以在命令行参数的末尾(仅)插入他想要的任何内容,例如:
./script report --color black --version 19.4 more and more --info 551_5 from --the user
我想解析这个数组@ARGV
并将附加信息插入到一个变量中:
$additional = "more and more --info 551_5 from --the user"
我发现在使用 之后,它会从数组GetOptions
中删除那些选项(不包括$ARGV[0]
) 。@ARGV
问题是,我真的不知道如何从数组中获取附加信息。也许我应该添加一个额外的选项,如下所示:
./script report --color black --version 19.4 --additional more and more --info 551_5 from --the user
并把所有东西都放进去additional
。但是这样一来,我又遇到了另一个问题——它会将--info
和--the
视为参数。
我该如何解决这个问题?
编辑:我看到pass_through
可以使用。但是,如果用户有一个类似于我的可用选项之一的选项怎么办?它可以解决一些问题。是否可以像处理字符串一样处理它?同样以这种方式,我将不得不解析@ARGV
和删除$ARGV[0]
(动作)。
EDIT-2:该--
方法将起作用。但在我看来,这是一种解决方法,而不是解决这个问题的正确方法。必须有一种更清洁的方法来做到这一点。也许换成不同的模块?
解决方案
您可以使用--
来分隔其他参数:./script --option1 --option2 -- --userOption1 --userOption2
https://metacpan.org/pod/Getopt::Long#Mixing-command-line-option-with-other-arguments
推荐阅读
- ios - 如何使用 CustomStringConvertible 和 RawRepresentable 组合类型指定函数参数的类型?
- javascript - 如何在 PHP 中打印对象数组
- centos7 - nmap 报告关闭端口 Centos 7,而 pid 在此端口上运行
- ios - updateSearchResults 方法中 didSelectRow 的索引超出范围
- html - 页面上的多个输入 =“类型”,每个页面都有特定的上传类型
- batch-file - 通过命令行以用户输入作为变量运行 dtexec 时出错
- qlikview - qlikview 中每个产品组的总百分比
- machine-learning - 如何节省时间进行网格搜索和 k 折交叉验证以进行超参数调整?
- javascript - 将数组添加到对象中
- python - Python:当位于不同目录时,如何选择多个脚本之一作为包导入到主脚本中?