Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LABORATORNAYa_RABOTA__5.rtf
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
271 Кб
Скачать
☆

5.4.2 Использование команды getopts

Весьма необходимой при программировании является команда getopts, которая осуществляет синтаксический анализ командной строки, выделяя флаги, и используется для объявления переменных. Синтаксис команды следующий:

getopts option-string variable [arg . . . ]

Флаги – это опции командной строки, обычно помеченные знаком минус; Например, -F является флагом для команды ls -F. Иногда эти флаги имеют аргументы, связанные с ними. Программы интерпретируют эти флаги, соответствующим образом изменяя свое поведение.

Строка опций option-string – это список возможных букв и чисел соответствующего флага. Если ожидается, что некоторый флаг будет сопровождаться некоторым аргументом, то за этой буквой должно следовать двоеточие. Соответствующей переменной присваивается буква данной опции. Если команда getopts может распознать аргумент, она возвращает истину. Принято включать getopts в цикл while и анализировать введенные данные с помощью оператора case.

Предположим, необходимо распознать командную строку следующего формата: testprog -ifile_in.txt -ofile_out.doc -L -t -r. Вот как выглядит использование оператора getopts в этом случае:

while getopts o:i:Ltr optletter         do case $optletter in             o) oflag=1; oval=$OPTARG;;             i) iflag=1;ival=$OPTARG;;             L) Lflag=1;;             t) tflag=1;;            r) rflag=1;;             *) echo Illegal option $optletter         esac done

Функция getopts включает две специальные переменные среды–OPTARG и OPTIND. Если ожидается дополнительное значение, то OPTARG устанавливается в значение этого аргумента (будет равна file_in.txt для опции ifile_out.doc для опции o). OPTIND является числовым индексом на упомянутый аргумент. Функция getopts также понимает переменные типа массив, следовательно, можно использовать ее в функции не только для синтаксического анализа аргументов функций, но и для анализа введенных пользователем данных.

5.4.3 Управление последовательностью действий в командных файлах

Часто бывает необходимо обеспечить проведение каких-либо действий циклически и управление дальнейшими действиями в зависимости от результатов проверки некоторого условия. Для решения подобных задач язык программирования bash предоставляет Вам возможность использовать такие управляющие конструкции, как for, case, if и while. С точки зрения командного процессора эти управляющие конструкции являются обычными командами и могут использоваться как при создании командных файлов, так и при работе в интерактивном режиме. Команды, реализующие подобные конструкции, по сути дела являются операторами языка программирования bash. Поэтому при описании языка программирования bash термин "оператор" будет использоваться наравне с термином "команда".

Команды ОС UNIX возвращают код завершения, значение которого может быть использовано для принятия решения о дальнейших действиях. Команда test, например, создана специально для использования в командных файлах. Единственная функция этой команды заключается в выработке кода завершения. Так например, команда

test -f file

возвращает нулевой код завершения ("истина"), если файл file существует, и ненулевой код завершения ("ложь") в противном случае.

test s – истина, если аргумент s имеет значение "истина";

test -f file – истина, если файл file существует;

test -i file – истина, если файл file доступен по чтению;

test -w file – истина, если файл file доступен по записи;

test -e file – истина, если файл file - исполняемая программа;

test -d file – истина, если файл file является каталогом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]