如何为一个标志使用两个参数?
例如:
./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
需要两个参数,这两个参数之间应该去掉空格。但对于一些可能更容易解决的问题来说,这似乎是一项相当艰巨的工作。