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