我正在编写一个脚本,可以执行以下操作:

脚本名称--resource1= xxx --resource2= xxx

但是最多可以超过50个。有没有办法让GetOpt接受动态选项名称?

有帮助吗?

解决方案

如何为 Getopt :: Long 下面的例子?由于选项列表可能很长,因此使用 Getopt :: ArgvFile 允许您可以为配置文件提供选项,而不是在命令行中指定它们。 通用标签

其他提示

它将与相同的选项名称一起使用重复

例如:script-name --resource=xxx --resource=xxx

是的,正如我自己想做的那样,我想接受-#参数,而Getopt :: Long不接受选项名称的正则表达式。所以这就是我所做的: 通用标签

然后我定义了filearg()函数: 通用标签

所以需要的是pass_through选项,检查您想要的内容,并在显示时设置这些内容。上面我有未定义的选项传递给我的函数。我将其用于文件检查和特殊选项-#,其中#是一些整数。如果不匹配,则添加到badargs数组,因为这样做不会导致GetOptions失败,因此我必须在GetOptions返回后检查此数组,以查看是否看到错误。您还可以通过使用die("!FINISH");结束回调函数来使它以选项错误结束,这将导致GetOptions终止脚本。

我使用它的目的是具有-20 FILE1 -30 FILE2之类的功能,因此可以覆盖后续文件的选项。我看到您可以执行类似的操作,先检查选项名称的第一部分,然后检查值。因此,如果所有选项都以--resource开头,那么请在函数中查找如下内容:/^--?(resource\w+)=(.*)$/,然后将其添加到选项数组中。

无论如何,希望这会有所帮助。

另一种尝试的方法是仅使用某种配置文件。鉴于您计划拥有大量信息,这似乎是写入和解析的最简单方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top