问题标签 [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 投票
2 回答
5564 浏览

perl - perl Getopt::Long 中的未知选项

如何使用 Getopt::Long 识别未知选项?

我尝试了'<>',但它没有按预期工作..考虑:

Unknown option只想在有无法识别的选项时打印(在这种情况下,除此之外的任何选项--help)。但现在它认为文件名是一个无法识别的选项..

0 投票
1 回答
122 浏览

perl - perl 通过 Getopt::Long 传递选项卡

我有一个简单的脚本,我希望用户能够指定分隔符:

但是,如果我似乎没有找到传递 "\t" 并被评估为脚本中的选项卡的方法:

两者都不会产生我想要的输出,即命令行结果中由制表符分隔的值。

0 投票
2 回答
111 浏览

perl - 使用 Getopt::Long 解析的格式化选项以传递给另一个程序

我正在使用 Getopt::Long 来解析传递给我的程序的选项。我想格式化这些选项(在修改它们之后)以传递给另一个程序。

Getopt 是这样做的,还是可能有另一个模块可以为我做到这一点?

例子:

0 投票
1 回答
459 浏览

c - 让 gcc getopt 示例接受长参数?

我正在尝试让以下代码与命令一起使用

但我得到了错误

使用短参数选项

我得到正确答案

编码:

0 投票
3 回答
709 浏览

perl - 解析所有参数并存储到哈希

如何在我的 perl 脚本中不指定参数名称的情况下将所有任意参数解析为哈希。

使用以下参数运行命令应给出如下所示的哈希值。

-arg1=第一个 --arg2=第二个 -arg3 -arg4=2.0013 -arg5=100

这可以使用 Getopt::Long 来实现,如下所示

但是,我的参数列表太长,我不想在 GetOptions 中指定参数名称。因此,仅使用哈希作为参数调用 GetOptions 应该找出参数是什么(以及它们的类型整数/字符串/浮点数/单独参数)并创建一个哈希。

0 投票
1 回答
2459 浏览

c - struct 选项出错:数组类型的元素类型不完整

我尝试构建一个解析 cmd 行的函数。但是,当我定义long_options数组时,会出现编译错误:

编码:

你能帮助我为什么会得到这些错误吗?

0 投票
1 回答
152 浏览

c - getopt_long() 看不到终结符

我正在开发一个 C 程序,它使用 getopt 读取选项,然后遍历 argc 的其余部分以读取非可选参数。其中一些非可选参数是数字,其中一些是负数。常见问题,我知道,并且我理解修复只是在选项的结尾和非可选参数的开头之间放置一个“--”终止符。但是,这似乎不适用于我当前的设置。

这是读取可选和非可选参数的代码片段:

这是函数调用和输出:

知道为什么会发生这种情况,或者解决方法是什么?

0 投票
1 回答
689 浏览

command - getopt 没有发现模棱两可的可选参数

我写了一个使用 getopt 命令的 shell 脚本。提供给 getopt 命令的长选项列表包括以下三个不同的选项:

当我运行我的脚本时

它显然包含一个模棱两可的选项(--local),getopt 将其返回为“--local-address”和一个零代码。

但如果我尝试

这里 getopt 确实发现它模棱两可:

鉴于 getopt(1) 的手册页显示,我认为这种行为很奇怪:

我错过了什么?

提前感谢

PD:在 RHEL5 中测试

附录

在阅读了Jonathan Leffler的答案后,我尝试了一些测试——注意冒号模式:

2014-05-26 更新——测试 getopt_long(3)

我创建了一个简单的 C 程序来测试 getopt_long(3) 函数。

在我的源代码中,传递给 getopt_long(3) 的结构“option”的数组包含三个长选项“xxaaa”、“xxxyy”和“xxxzz”的定义——它们都以相同的字符串“xx”开头测试 getopt_long(3) 检测模糊选项的能力。

(有关这些字段用途的详细信息,请参阅 getopt_long(3) 的手册页)。

请注意,“--xx”这样的模棱两可的选项有三个可能的候选者,但“---xxx”只有两个候选者。

getopt_long 的行为根据名为“has_arg”和“val”的两个结构字段的值而变化:

从上面的例子:

getopt(1) 命令在每个“用户定义的长选项”的“val”字段中分配一个 2(在源代码中标记为 LONG_OPT)。在启动此线程的情况下,“选项”结构的数组将如下所示:

因此,getopt(1) 检测不明确的长选项的唯一方法是候选者在其“has_arg”字段中具有不同的值。

问题

解决方法建议

由于我还不能回答 Q1,我认为可能会修改 getopt(1) 命令的源代码,以在“val”字段中为每个用户定义的长选项分配不同的值,而不是相同的 2 (LONG_OPT) 值。由于 getopt_long(3) 可以在短选项的情况下返回单个 ASCII 字符,因此这些值应该不属于 ASCII 映射 -- val >= 256

0 投票
1 回答
88 浏览

c - 如何在 linux c 中使用 getopt 限制“--”?

我必须限制用户何时提供“--”作为选项。例如:

应该抛出一个错误。为了解析,我正在使用getopt

如何使用 getopt 实现这一点?

0 投票
2 回答
7911 浏览

python - python 仅获取 opt long 选项

我想使用 getopt 从命令行参数获取输入,仅具有长选项

例子:./script --empid 123

我收到getopt.GetoptError: option --empid not recognised上述代码的错误错误。可能出了什么问题?