c-Getopt:一个与多个optargs一起使用的标志



如何为一个标志使用两个参数?

例如:

./xampl -c foo bar

将返回:

foobar

我已经查看了gnucat和freebsd-ls的源代码,但找不到任何线索

我是一个C新手,也是一个称职的bash脚本编写者。

标准的getopt东西没有办法做到这一点,它允许向选项(带有:(添加单个参数,如-cfoo(选项参数的一部分(或-c foo(在下一个参数中(。如果使用::,这也是可选的,尽管我认为它必须是选项参数本身的扩展,而不是单独的参数。

它无法在选项参数之后取多个参数,并将它们组合为一个选项。您可以用引号将它们括起来,迫使其成为单个参数,例如:

-c "foo bar"

但这并不能消除空间。当然,没有什么可以阻止您直接指定您想要的东西,只需稍微修改一下:

-c foobar

换句话说,我不清楚为什么你真的需要它们分开,尤其是因为你无论如何都要把它们组合在一起。

毫无疑问,您可以修改getopt来做到这一点,例如允许类似abc[2,collapse](而不是abc:(的东西来指定-c需要两个参数,这两个参数之间应该去掉空格。但对于一些可能更容易解决的问题来说,这似乎是一项相当艰巨的工作。

最新更新