опция, за которой следует опция в getopt

У меня есть сомнение, если у нас есть два варианта -a и –c, а опция -a должна иметь значение и значение для -c

теперь, если я даю -> testopt -a -c [testopt is program]

то моя программа принимает значение -c как значение для -a. есть ли способ, когда я могу убедиться, что параметр со значением не имеет других параметров в качестве его значений?

дело в том, что система принимает – значение одного ключевого слова в качестве другого ключевого слова, которое мне нужно предотвратить. например – testopt -a -c. в этом случае был обязательный аргумент (значение) для -a и нет значения для -c .. но i my getopt интерпретирует это как «-c» – это значение для «-a», как я могу выбросить ошибку при этом использовании Getopt.

Вы получаете -c как значение для параметра -a потому что вы указали -a чтобы иметь значение. Если вы вызываете свою программу с опциями наоборот

 $ testopt -c -a 

то getopt вернется с getopt '?' что значение параметра отсутствует (согласно странице руководства getopt ), и на консоли будет напечатана ошибка.

К сожалению, нет способа сообщить getopt что аргумент имеет необязательное значение, тогда вы должны реализовать свой собственный парсер параметров.