Библиотека сайта rus-linux.net
Руководство по Bash для начинающих | ||
---|---|---|
Назад | Глава 7: Условные инструкции | Вперед |
Подводим итог
В этой главе мы узнали, как в наших скриптах применять условные инструкции, чтобы в случае успешного или неудачного исполнения команды предпринимать различные действия. Действия можно задать с помощью инструкции if. С ее помощью можно сравнивать арифметические выражения и строки, проверять коды возврата, введенные данные и файлы, используемые в скрипте.
В скрипте командам часто предшествует простая проверка с помощью инструкции if/then/fi, которая позволяет запускать скрипт в фоновом режиме или с помощью cron. Более сложные определения условий обычно помещаются в инструкцию case.
В случае успешной проверки условия, скрипт может с помощью команды exit 0 явно об этом проинформировать родительский процесс. В случае возникновения проблем можно вернуть любое другое число. Родительский процесс может, проанализировав код возврата, предпринять соответствующее действие.
Упражнения
Вот некоторые идеи, которые подтолкнут вас к использованию в скриптах инструкции if:
- Используйте конструкцию if/then/elif/else, которая будет выдавать информацию о текущем месяце. Скрипт должен сообщать о количестве дней в текущем месяце и сообщать информацию о високосных годах, если текущий месяц — февраль.
- Сделайте то же самое с помощью инструкции case и альтернативного варианта команды date.
- Измените файл
/etc/profile
таким образом, чтобы вы получали специальное приветственное сообщение, когда вы подключаетесь к системе как root. - Отредактируйте скрипт
leaptest.sh
из раздела "Логические операции" так, чтобы для него требовался только один аргумент - год. Проверьте, что указывается именно один аргумент. - Напишите скрипт
whichdaemon.sh
, который проверяет, запущены ли в вашей системе демоны httpd и init. Если демон httpd работает, скрипт должен выдать, например, следующее сообщение: "На этой машине работает веб-сервер". Для проверки процессов используйте команду ps. -
Напишите скрипт, называемый
whichdaemon.sh
, который с помощью команды scp делает резервную копию вашего домашнего директория на удаленной машине. Скрипт должен оставлять сообщение в журнальном файле, например, в~/log/homebackup.log
. Если у вас нет второй машины, на которой должна находиться резервная копия, воспользуйтесь командой scp для проверки возможности копирования на localhost. Для этого потребуется обмен ключами SSH между двумя хостами, в противном случае вам потребуется вводить пароль. Создание ключей SSH объясняется в manssh-keygen
.Измените скрипт, приведенный в первом примере раздела "Проверка простых условий", так, чтобы включить случай использования ровно 90% дискового пространства и случай использования менее 10% дискового пространства.
В скрипте для создания резервной копии нужно использовать команду tar
cf
, а для сжатия в файл.tar
— команды gzip или bzip2. Храните имена всех файлов в переменных. Храните в переменной имя удаленного сервера и удаленного директория. Это облегчит повторное использование скрипта или внесение в будущем в него исправлений.Скрипт должен проверять наличие сжатого архива. Если он существует, то сначала его удалите его с тем, чтобы избежать выдачи ненужного сообщения.
Скрипт также должен также проверять наличие на диске места. Имейте в виду, что в любой заданный момент у вас на диске могут одновременно быть данные в домашнем директории, в файле
.tar
и в сжатом архиве. Если не хватает дискового пространства, выдайте в журнальный файл сообщение об ошибке.Скрипт перед своим завершением должен стирать сжатый архив.
Предыдущий раздел: | Оглавление | Следующий раздел: |
Использование инструкций case | Глава 8 |