问题标签 [getopt-long]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
5479 浏览

perl - 如何使用 GetOpt::Long::GetOptions 解析字符串?

我有一个带有可能命令行参数的字符串(使用 Read-Eval-Print-Loop 程序),我希望它在传递给 Getopt::Long 时被解析为类似于命令行参数。

详细说明:

我有一个字符串

我希望它由 GetOptions 解析,以便我更容易添加新选项。

我能想到的一种解决方法是将字符串拆分为空格并用新数组替换@ARGV,然后调用GetOptions。就像是 ...

有什么好的/更好的方法吗?

0 投票
4 回答
1589 浏览

perl - 如何在我的 Perl 程序中覆盖硬编码配置?

我有一个 Perl 脚本,它在顶部附近为它将使用的目录和文件设置变量。它还需要将一些变量设置为命令行参数。例子:

这在我的开发、测试和生产环境中运行良好。但是,我试图让覆盖某些变量(无需进入调试器)更容易进行开发和测试。(例如,如果我想设置我的 input_file = "/tmp/my_input_file.dat")。我的想法是使用 GetOptions 函数来处理这个问题,如下所示:

GetOptions 只能调用一次(据我所知)。我的第一个片段中的前 4 个参数是必需的,上面的最后 7 个是可选的。我认为理想的情况是在我的第一个代码片段中设置默认值,然后以某种方式覆盖在命令行中传递参数时已设置的任何默认值。我考虑过将所有选项存储在哈希中,然后在使用默认值设置每个变量时使用该哈希,除非哈希中存在条目,但这似乎增加了很多额外的逻辑。有没有办法在脚本的两个不同位置调用 GetOptions?

不确定这是否有意义。

谢谢!

0 投票
6 回答
2417 浏览

perl - Perl 的 Getopt::Long 可以解析我没有提前定义的参数吗?

我知道如何使用 Perl 的 Getopt::Long,但我不确定如何将其配置为接受任何尚未明确定义的“--key=value”对并将其粘贴在哈希中。换句话说,我不提前知道用户可能想要什么选项,所以我无法定义所有选项,但我希望能够解析所有选项。

建议?提前谢谢。

0 投票
3 回答
7758 浏览

c++ - 获取 optarg 作为 C++ 字符串对象

我正在使用 getopt_long 来处理 C++ 应用程序中的命令行参数。这些示例都显示了类似于printf("Username: %s\n", optarg)处理示例中的内容。这非常适合展示示例,但我希望能够实际存储这些值以供以后使用。其余大部分代码都使用string对象而不是对象,char*因此我需要将 optarg 的内容转换/复制/任何内容转换为字符串。

上面的代码可以编译,但是当它执行时,Illegal instruction如果我尝试使用 printf 打印出 bar 的值,我会得到一个错误(它似乎对 cout 工作得很好)。

我对命令行调试知之甚少,无法更好地挖掘非法指令可能是什么。我一直在运行 valgrind,但由于此错误导致的大量内存错误使我很难准确找出可能导致此错误的原因。

0 投票
4 回答
32633 浏览

c - getopt 不将可选参数解析为参数

在 C 中,getopt_long 不会将可选参数解析为命令行参数参数。

当我运行程序时,无法识别可选参数,就像下面运行的示例一样。

这是测试代码。

0 投票
2 回答
330 浏览

perl - 如何使 Perl 的 Getopt::Long 不处理参数名称中的文字 =?

我写了一个 Perl 程序“transfer.pl”,输入参数是哈希值(键和值都是字符串)。代码段是:

我用的是windows系统。在命令行上,我输入:

perl 传输.pl --transfer "table = %s"="[TableName=%s]"

我希望键是table = %s,值是[TableName=%s],但似乎 Getopt::Long 总是找到第一个=,所以键是table,值是%s=[TableName=%s]

当我输入

perl 传输.pl --transfer "table \= %s"="[TableName\=%s]"

关键是table \,价值是%s=[TableName\=%s]

我想知道如何绕过字符串值中的“=”并使代码执行我期望的操作?

非常感谢!

0 投票
5 回答
14526 浏览

python - 有没有办法说服 python 的 getopt 处理选项的可选参数?

根据python getopt(我认为)的文档,选项字段应该表现为getopt()函数。但是我似乎无法为我的代码启用可选参数:

结果是:

0 投票
4 回答
2886 浏览

linux - getopt_long 与 getopt_long_only

做一个合适的 Linux/unix 风格的应用程序,最好的选择是什么(例如,afaik ls使用 getopt_long,但例如ffmpeg getopt_long_only)。你推荐哪一个?

干杯,

0 投票
1 回答
364 浏览

perl - 当参数的值为 0 时,为什么我的 Perl 程序会打印帮助消息?

如果我这样做:

并像这样调用程序:

它总是导致调用usage(),所以显然0不被视为整数值。我能做什么接受整数值和 0?

0 投票
3 回答
981 浏览

perl - 我该如何处理 -r=使用 Perl 的 Getopt::Long?

我正在使用Getopt::Long解析 Perl 中的命令行选项。我被迫对短命令( )使用前缀-(一个破折号),对长命令(例如, )使用(双破折号)。-s----input=file

我的问题是有一个特殊的选项 ( -r=<pattern>) 所以它是长选项来满足参数的要求,但它必须有一个破折号 ( -) 前缀,而不是--像其他长选项一样的双破折号 ( )。是否可以设置Getopt::Long来接受这些?