我怀疑我们是否有两个选项-a和-c和选项-a需要有一个值而没有-c
的值现在,如果我给 - > testopt -a -c [testopt是程序]
然后我的程序将-c作为-a的值。有没有办法可以确保有价值的期权没有其他选项作为其价值?
问题是系统接受 - 一个关键字的值作为我需要防止的另一个关键字。 例如 - testopt -a -c。在这种情况下,-a的强制参数(值)和-c的值没有...但是我的getopt将其解释为“-c”是“-a”的值我怎么能在这个上抛出一个错误getopt的。
答案 0 :(得分:1)
您获得-c
作为-a
选项的值,因为您指定了-a
来获得值。如果您使用相反的选项调用您的程序
$ testopt -c -a
然后getopt
将返回'?'
,表示缺少选项值(根据getopt
manual page),并且控制台上会打印错误。
不幸的是,没有办法告诉getopt
一个参数有一个可选值,那么你必须实现自己的选项解析器。