Getopt:与多个optarg一起使用的标志

时间:2018-11-28 05:43:08

标签: c bash getopt

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

例如:

./xampl -c foo bar

将返回:

foobar

我查看了gnu cat和freebsd ls的源代码,但是找不到任何线索

我是C新手,也是精通bash脚本的人。

1 个答案:

答案 0 :(得分:1)

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

在选项参数之后不能采用多个参数并将它们组合为一个选项。您可以用引号将它们括起来,以将其强制为单个参数,例如:

-c "foo bar"

但是不会删除空格。当然,没有什么可以阻止您通过稍微修改直接指定 您想要的东西了

-c foobar

换句话说,我不清楚为什么您实际上需要将它们分开,特别是因为无论如何您都要将它们组合在一起。

毫无疑问,您可以修改 getopt来执行此操作,例如允许类似abc[2,collapse](而不是abc:)之类的内容来指定{{1} }需要两个参数,它们之间应删除空格。但这似乎是一件很容易的事,但是可能更容易解决。