Это довольно стандартное поведение для программ - останавливать обработку опций, когда они сталкиваются с первым не опциональным аргументом.Это очень часто именно то, что вы хотите.Например, подумайте об этом:
ssh someremotehost ls -l
Если ssh
попытается обработать параметры после первого аргумента без параметров, вы никогда не сможете передать параметры удаленным командам.Еще один стандарт, поддерживаемый getopt, заключается в том, что обработка опций явно останавливается при аргументе --
, поэтому вы можете сделать что-то вроде этого, чтобы удалить файл с именем -f
:
rm -- -f
Если вы действительно хотите обработать опцииВ любом месте командной строки вы можете написать свою собственную процедуру обработки опций.Это не так уж сложно, и вы можете реализовать поддержку длинных опций (--this-is-a-long-option
).