Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Руководство по Bash для начинающих
Назад Глава 7: Условные инструкции Вперед

Подводим итог

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

В скрипте командам часто предшествует простая проверка с помощью инструкции if/then/fi, которая позволяет запускать скрипт в фоновом режиме или с помощью cron. Более сложные определения условий обычно помещаются в инструкцию case.

В случае успешной проверки условия, скрипт может с помощью команды exit 0 явно об этом проинформировать родительский процесс. В случае возникновения проблем можно вернуть любое другое число. Родительский процесс может, проанализировав код возврата, предпринять соответствующее действие.

Упражнения

Вот некоторые идеи, которые подтолкнут вас к использованию в скриптах инструкции if:

  1. Используйте конструкцию if/then/elif/else, которая будет выдавать информацию о текущем месяце. Скрипт должен сообщать о количестве дней в текущем месяце и сообщать информацию о високосных годах, если текущий месяц — февраль.
  2. Сделайте то же самое с помощью инструкции case и альтернативного варианта команды date.
  3. Измените файл /etc/profile таким образом, чтобы вы получали специальное приветственное сообщение, когда вы подключаетесь к системе как root.
  4. Отредактируйте скрипт leaptest.sh из раздела "Логические операции" так, чтобы для него требовался только один аргумент - год. Проверьте, что указывается именно один аргумент.
  5. Напишите скрипт whichdaemon.sh, который проверяет, запущены ли в вашей системе демоны httpd и init. Если демон httpd работает, скрипт должен выдать, например, следующее сообщение: "На этой машине работает веб-сервер". Для проверки процессов используйте команду ps.
  6. Напишите скрипт, называемый whichdaemon.sh, который с помощью команды scp делает резервную копию вашего домашнего директория на удаленной машине. Скрипт должен оставлять сообщение в журнальном файле, например, в ~/log/homebackup.log. Если у вас нет второй машины, на которой должна находиться резервная копия, воспользуйтесь командой scp для проверки возможности копирования на localhost. Для этого потребуется обмен ключами SSH между двумя хостами, в противном случае вам потребуется вводить пароль. Создание ключей SSH объясняется в man ssh-keygen.

    Измените скрипт, приведенный в первом примере раздела "Проверка простых условий", так, чтобы включить случай использования ровно 90% дискового пространства и случай использования менее 10% дискового пространства.

    В скрипте для создания резервной копии нужно использовать команду tar cf, а для сжатия в файл .tar — команды gzip или bzip2. Храните имена всех файлов в переменных. Храните в переменной имя удаленного сервера и удаленного директория. Это облегчит повторное использование скрипта или внесение в будущем в него исправлений.

    Скрипт должен проверять наличие сжатого архива. Если он существует, то сначала его удалите его с тем, чтобы избежать выдачи ненужного сообщения.

    Скрипт также должен также проверять наличие на диске места. Имейте в виду, что в любой заданный момент у вас на диске могут одновременно быть данные в домашнем директории, в файле .tar и в сжатом архиве. Если не хватает дискового пространства, выдайте в журнальный файл сообщение об ошибке.

    Скрипт перед своим завершением должен стирать сжатый архив.


Предыдущий раздел: Оглавление Следующий раздел:
Использование инструкций case   Глава 8