mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

      GETOPTS(1)                                           GETOPTS(1)

      НАЗВАНИЕ
              getopts - разбор опций команды

      СИНТАКСИС
              getopts  цепочка_опций имя [аргумент ...]

      ОПИСАНИЕ
              Команда getopts используется shell-процедурами для раз-
              бора позиционных параметров и проверки опций на  допус-
              тимость. Команда getopts  поддерживает  все  применимые
              правила стандартного синтаксиса команд  [см.  intro(1),
              правила 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,  то
                   при обработке последней строки окончательное  зна-
                   чение этой переменной окажется  не  таким,  как  в
                   предыдущих строках.

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

      ФАЙЛЫ
              /usr/bin/getopt         Старая версия программы разбора
                                      опций.
              /usr/lib/getoptcvt      Программа перевода shell-проце-
                                      дур, использовавших getopt,  на
                                      getopts.

      СМ. ТАКЖЕ
              gutil(1G), intro(1), sh(1).
              getopt(3C) в Справочнике программиста.

      ДИАГНОСТИКА
              Команда getopts выводит сообщение об ошибке в стандарт-
              ный протокол, когда встречается опция, не включенная  в
              цепочку_опций.

      ПРЕДОСТЕРЕЖЕНИЯ
              Хотя текущая  реализация  getopts  допускает  некоторые
              отступления от правил, задающих синтаксис  команд  [см.
              intro(1)], этим не следует пользоваться, так как подоб-
              ные возможности могут  не  поддерживаться  в  следующих
              версиях системы. Пусть, как и в ПРИМЕРЕ, a и b -  опции
              без аргументов, а опции o требуется аргумент:

                   cmd  -aboxxx file

              Здесь нарушено правило 5: опция с аргументом не  должна
              быть в одной группе с остальными опциями.

                   cmd  -ab -oxxx file

              Нарушено правило 6: после опции, которой требуется  ар-
              гумент, должен быть пробел или табуляция.

              Изменение значения переменной OPTIND или разбор различ-
              ных наборов аргументов могут привести к непредсказуемо-
              му результату.



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк