如何为一个标志使用两个参数?
例如:
./xampl -c foo bar
将返回:
foobar
我查看了gnu cat和freebsd ls的源代码,但是找不到任何线索
我是C新手,也是精通bash脚本的人。
答案 0 :(得分:1)
标准getopt
的东西无法做到这一点,它允许对选项(带有:
的单参数添加,例如-cfoo
(选项参数的一部分)或-c foo
(在下一个参数中)。如果您使用::
,这也可以是可选的,尽管我认为它必须是option参数本身的扩展,而不是单独的参数。
在选项参数之后不能采用多个参数并将它们组合为一个选项。您可以用引号将它们括起来,以将其强制为单个参数,例如:
-c "foo bar"
但是不会删除空格。当然,没有什么可以阻止您通过稍微修改直接指定 您想要的东西了>
-c foobar
换句话说,我不清楚为什么您实际上需要将它们分开,特别是因为无论如何您都要将它们组合在一起。
毫无疑问,您可以修改 getopt
来执行此操作,例如允许类似abc[2,collapse]
(而不是abc:
)之类的内容来指定{{1} }需要两个参数,它们之间应删除空格。但这似乎是一件很容易的事,但是可能更容易解决。