Unix Man (Справочное руководство)


GETOPTS(1)


GETOPTS(1)

НАЗВАНИЕ


getopts - разбор опций команды

СИНТАКСИС

getopts цепочка_опций имя [аргумент ...]

ОПИСАНИЕ


Команда getopts используется shell-процедурами для разбора позиционных параметров и проверки опций на допустимость. Команда getopts поддерживает все применимые правила стандартного синтаксиса команд [см. , правила 3-10].

Цепочка_опций должна содержать флаги, которые будут распознаваться shell-процедурой, использующей getopts. Если за флагом следует двоеточие, то предполагается, что опция имеет аргумент или группу аргументов, которые должны отделяться от флага пробелами или табуляциями.

После каждого вызова getopts помещает следующую опцию в переменную имя, а номер аргумента, который должен быть обработан следующим, - в переменную OPTIND. Всегда, когда запускается shell или shell-процедура, OPTIND получает значение 1.

Если опции требуется аргумент, то getopts помещает его в переменную OPTARG.

Если встретилась некорректная опция, то в переменную имя помещается ?.

Если опции кончились, getopts возвращает ненулевой код завершения. Можно использовать специальную опцию --, чтобы отметить конец опций.

По умолчанию команда getopts разбирает позиционные параметры вызвавшей ее shell-процедуры, но если указать дополнительные аргументы, то getopts будет разбирать их.

ПРИМЕР


Следующий фрагмент shell-процедуры cmd показывает, как можно обработать аргументы команды, допускающей опции a и b, а также опцию o, которая должна иметь аргумент:

while getopts abo: c do case $c in a | b) FLAG=$c;; o) OARG=$OPTARG;; ?) echo $USAGE exit 2;; esac done shift `expr $OPTIND - 1`

При такой обработке следующие строки оказываются эквивалентными:

cmd -a -b -o "xxx z yy" file cmd -a -b -o "xxx z yy" -- file cmd -ab -o xxx,z,yy file cmd -ab -o "xxx z yy" file cmd -o xxx,z,yy -b -a file

ПРИМЕЧАНИЯ


Утверждение о эквивалентности предыдущих строк не вполне верно:

  1. В последней строке опции b и a идут в ином порядке, чем в предыдущих, и так как в данном примере эти опции помещаются в одну переменную FLAG, то при обработке последней строки окончательное значение этой переменной окажется не таким, как в предыдущих строках.

  • В тех строках, в которых аргумент опции o задан в виде "xxx z yy", OARG примет значение xxx z yy, а в тех строках, где аргумент опции o задан как xxx,z,yy, OARG будет равен xxx,z,yy.



  • Начало  Назад  Вперед



    Книжный магазин