Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Операторы цикла while и until ⇐ ПредыдущаяСтр 5 из 5
В обобщенной форме оператор цикла while выглядит следующим образом: while список-команд Выполнение оператора цикла while сводится к тому, что сначала выполняется последовательность команд (операторов), которую задает "список-команд" в строке, содержащей служебное слово while, а затем, если последняя выполненная команда из этой последовательности команд возвращает нулевой код завершения ("истина"), выполняется последовательность команд (операторов), которую задает "список-команд" в строке, содержащей служебное слово do, после чего осуществляется безусловный переход на начало оператора цикла while. Выход из цикла будет осуществлен тогда, когда последняя выполненная команда из последовательности команд (операторов), которую задает "список-команд" в строке, содержащей служебное слово while, возвратит ненулевой код завершения ("ложь"). Приведенный ниже фрагмент командного файла иллюстрирует использование оператора цикла while. В нем реализуется ожидание события, состоящего в удалении файла с определенным именем, и только после наступления этого события производятся дальнейшие действия. Командный файл, продемонстрированный в приведенном примере, по сути дела является простейшей реализацией механизма синхронизации взаимодействующих процессов на основе семафоров. while test -f lockfile При замене в операторе цикла while служебного слова while на until условие, при выполнении которого осуществляется выход из цикла, меняется на противоположное. В остальном оператор цикла while и оператор цикла until идентичны. В обобщенной форме оператор цикла until выглядит следующим образом: until список-команд Следующие две команды ОС UNIX, рассмотренные ниже, используются только совместно с управляющими конструкциями языка программирования bash: это команда true, которая всегда возвращает код завершения, равный нулю (т.е. "истина”), и команда false, которая всегда возвращает код завершения, не равный нулю (т. е. "ложь"). Ниже приведены два примера, иллюстрирующие бесконечные циклы, которые будут выполняться до тех пор, пока ЭВМ не сломается или не будет выключена (ну, по крайней мере, до тех пор, пока Вы не нажмете клавишу, соответствующую специальному символу INTERRUPT).
while true until false Прерывание циклов
Два несложных способа позволяют вам прерывать циклы в оболочке bash. Команда break завершает выполнение цикла, а команда continue завершает данную итерацию блока операторов. Команда break полезна для завершения цикла while в ситуациях, когда условие перестает быть правильным. Пример бесконечного цикла while, с прерыванием в момент, когда файл перестает существовать: while true Команда continue используется в ситуациях, когда больше нет необходимости выполнять блок операторов, но вы можете захотеть продолжить проверять данный блок на других условных выражениях. Пример предназначен для игнорирования файла /dev/null в любом их списке: while file=$filelist[$i] Эта программа пропускает нужное значение, но продолжает тестировать остальные. В качестве еще одного примера командного файла приведем команду man. Если Вы уже использовали команду man, то у Вас могло создаться ошибочное впечатление, что эта команда реализована в виде выполняемой программы. Получить на терминале вариант команды man, используемый в Вашей версии ОС UNIX, можно по команде cat /bin/man или cat /usr/bin/man, сравните его с тем вариантом команды man, который приводится здесь: cd /usr/man
ЗАДАНИЕ НА ЛАБОРАТОРНУЮ РАБОТУ 1. Используя команды getopts grep написать командный файл, который анализирует командную строку с ключами: · -iinputfile – прочитать данные из указанного файла · -ooutputfile – вывести данные в указанный файл · -pшаблон – указать шаблон для поиска · -С – различать большие и малые буквы · -n – выдавать номера строк, а затем ищет в указанном файле нужные строки, определяемые ключом -p. 2. Написать на языке Си программу, которая вводит строку символов и определяет, чем является эта строка – целым числом, вещественным, датой или текстовой строкой. Затем программа завершается с помощью функции exit(n), передавая информацию в о коде завершения в оболочку. Командный файл должен вызывать эту программу и, проанализировав с помощью команды $? код возврата, выдавать сообщение о том какое число было введено.
3. Написать пример командного файла, обрабатывающего более 10 входных аргументов. 4. Написать командный файл – аналог команды ls (без использования самой этой команды). Требуется, что бы он выдавал информацию о нужном каталоге и выводил информацию о возможностях доступа к файлам этого каталога. 5. Написать командный файл, реализующий упрощенный механизм семафоров. Командный файл должен в течение некоторого времени t1 дожидаться освобождения ресурса, выдавая об этом сообщение, а дождавшись его освобождения использовать его в течение некоторого времени t2<>t1, также выдавая информацию о том, что ресурс используется соответствующим командным файлом (процессом). Запустить командный файл в одном виртуальном терминале в фоновом режиме, перенаправив его вывод в другой (>/dev/tty#, где # – номер терминала куда перенаправляется вывод), в котором также запущен этот файл, но не фоновом, а в привилегированном режиме. Доработать программу так, чтобы имелась возможность взаимодействия трех и более процессов. 6. Реализовать команду man с помощью командного файла.
Контрольные вопросы 1. Объясните понятие командных оболочек 2. Что такое POSIX? 3. Как определяются переменные и массивы в языке программирования bash? 4. Каково назначение операторов let и read? 5. Какие арифметические операции можно применять в языке программирования bash? 6. Что означает операция (())? 7. Какие стандартные имена переменных вы знаете? 8. Что такое метасимволы? 9. Как экранировать метасимволы? 10. Как создать и запускать командные файлы? 11. Как определяются функции в языке программирования Bash? 12. Каким образом Вы можете выяснить является файл каталогом или обычным файлом? 13. Каково назначение команд set, typset и unser? 14. Как передаются параметры в командные файлы? 15. Назовите специальные переменные языка bash и их назначение. 16. Каково предназначение команды getopts? 17. Какое отношение метасимволы имеют к генерации имен файлов? 18. Какие операторы управления действиями Вы знаете? 19. Какие операторы используются для прерывания цикла? 20. Для чего нужны команды false и true? 21. Что означает строка if test –f manSs/Si.Ss встреченная в командном файле?
|
||||||
Последнее изменение этой страницы: 2021-01-14; просмотров: 253; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.96.146 (0.008 с.) |