Обратите внимание, что getopt(1)
была недолгой ошибкой от AT & T.
getopt был создан в 1984 году, но уже похоронен в 1986 году, потому что он не был реально применим.
Доказательством того, что getopt
очень устарел, является то, что на справочной странице getopt(1)
все еще упоминается "$*"
вместо "$@"
, который был добавлен в Bourne Shell в 1986 году вместе с оболочкой getopts(1)
встроенный, чтобы иметь дело с аргументами с пробелами внутри.
Кстати: если вас интересует разбор длинных опций в сценариях оболочки, может быть интересно узнать, что реализация getopt(3)
из libc (Solaris) и ksh93
добавили единую реализацию длинных опций, которая поддерживает длинные опции в качестве псевдонимов для коротких вариантов. Это заставляет ksh93
и Bourne Shell
реализовывать единый интерфейс для длинных опций через getopts
.
Пример длинных опций, взятых из справочной страницы Bourne Shell:
getopts "f:(file)(input-file)o:(output-file)" OPTX "$@"
показывает, как долго псевдонимы опций могут использоваться как в Bourne Shell, так и в ksh93.
См. Справочную страницу недавнего Bourne Shell:
http://schillix.sourceforge.net/man/man1/bosh.1.html
и справочная страница для getopt (3) из OpenSolaris:
http://schillix.sourceforge.net/man/man3c/getopt.3c.html
и, наконец, справочная страница getopt (1) для проверки устаревших $ *:
http://schillix.sourceforge.net/man/man1/getopt.1.html