选项后跟getopt中的一个选项

我有一个疑问,如果我们有两个选项-a和-c和选项-a需要有一个值而没有-c的值

现在,如果我给 – > testopt -a -c [testopt是程序]

然后我的程序将-c作为-a的值。 有没有办法,我可以确保有价值的选项没有其他选项作为其值?

问题是系统接受 – 一个关键字的值作为我需要防止的另一个关键字。 例如 – testopt -a -c。 在这种情况下,-a的强制参数(值)和-c的值没有…但是我的getopt将其解释为“-c”是“-a”的值我怎么能在这个上抛出一个错误getopt的。

你得到-c作为-a选项的值,因为你指定-a有一个值。 如果您使用相反的选项调用程序

 $ testopt -c -a 

然后getopt将以'?'返回 指示缺少选项值(根据getopt手册页 ),并且将在控制台上打印错误。

不幸的是,没有办法告诉getopt一个参数有一个可选值,那么你必须实现自己的选项解析器。