<Предыдущая | Содержание: | Следующая>
Держите скрипты в рабочем состоянии
При разработке нашей программы полезно поддерживать ее в рабочем состоянии. Делая это и часто тестируя, мы можем обнаруживать ошибки на ранних этапах процесса разработки. Это значительно упростит отладку. Например, если мы запускаем программу, вносим небольшое изменение, затем снова запускаем программу и обнаруживаем проблему, весьма вероятно, что самое последнее изменение является источником проблемы. Добавляя пустые функции, называемые заглушки Говоря языком программистов, мы можем проверить логическую последовательность нашей программы на ранней стадии. При создании заглушки рекомендуется включить что-то, что обеспечивает обратную связь с программистом, которая показывает, что выполняется логический поток. Если мы посмотрим на вывод нашего скрипта сейчас:
[я @ linuxbox ~] $ sys_info_page
Системный информационный отчет для twin2
[я @ linuxbox ~] $ sys_info_page
Системный информационный отчет для twin2
Отчет о системной информации для linuxbox
Создано 03 19:2009:04 EDT, мной
Отчет о системной информации для linuxbox
Создано 03 19:2009:04 EDT, мной
мы видим, что в нашем выводе после метки времени есть пустые строки, но мы не можем быть уверены в причине. Если мы изменим функции, чтобы включить обратную связь:
отчет_время работы () {
echo "Выполнена функция report_uptime."
возвращают
}
report_disk_space () {
echo "Функция report_disk_space выполнена."
возвращают
}
отчет_домашнее_пространство () {
echo "Функция report_home_space выполнена."
возвращают
}
отчет_время работы () {
echo "Выполнена функция report_uptime."
возвращают
}
report_disk_space () {
echo "Функция report_disk_space выполнена."
возвращают
}
отчет_домашнее_пространство () {
echo "Функция report_home_space выполнена."
возвращают
}
и снова запустим скрипт:
[я @ linuxbox ~] $ sys_info_page
Отчет о системной информации для linuxbox
Отчет о системной информации для linuxbox
Сгенерировано мной 03 20:2009:05 EDT Выполнена функция report_uptime.
Выполнена функция report_disk_space. Выполнена функция report_home_space.
[я @ linuxbox ~] $ sys_info_page
Отчет о системной информации для linuxbox
Отчет о системной информации для linuxbox
Сгенерировано мной 03 20:2009:05 EDT Выполнена функция report_uptime.
Выполнена функция report_disk_space. Выполнена функция report_home_space.
Держите скрипты в рабочем состоянии
Теперь мы видим, что на самом деле три наши функции выполняются.
Когда наша функциональная структура установлена и работает, пришло время конкретизировать часть кода функции. Во-первых, report_uptime функция:
отчет_время работы () {
кошка << - _EOF_
Время работы системы
$ (время безотказной работы)
_EOF_
возвращают
}
отчет_время работы () {
кошка << - _EOF_
Время работы системы
$ (время безотказной работы)
_EOF_
возвращают
}
Это довольно просто. Мы используем здесь документ для вывода заголовка раздела и вывода Провел на сайте команда, окруженная теги, чтобы сохранить форматирование команды. В report_disk_space функция аналогична:
report_disk_space () {
кошка << - _EOF_
Использование дискового пространства
$ (df -h)
_EOF_
возвращают
}
report_disk_space () {
кошка << - _EOF_
Использование дискового пространства
$ (df -h)
_EOF_
возвращают
}
Эта функция использует df -h команда для определения объема дискового пространства. Наконец, мы построим report_home_space функция:
отчет_домашнее_пространство () {
кошка << - _EOF_
Использование домашнего пространства
$ (du -sh / home / *)
_EOF_
возвращают
}
отчет_домашнее_пространство () {
кошка << - _EOF_
Использование домашнего пространства
$ (du -sh / home / *)
_EOF_
возвращают
}
Мы используем du команда с -ш варианты для выполнения этой задачи. Однако это не полное решение проблемы. Хотя он будет работать в некоторых системах (например, Ubuntu), он не будет работать в других. Причина в том, что многие системы устанавливают разрешения для домашних каталогов, чтобы они не были доступны для чтения всем, что является разумной мерой безопасности. В этих системах report_home_space функция, как написано, будет
работает только в том случае, если наш скрипт запускается с привилегиями суперпользователя. Лучшим решением было бы, чтобы сценарий настраивал свое поведение в соответствии с привилегиями пользователя. Мы рассмотрим это в следующей главе.
Функции оболочки в вашем файле .bashrc
Функции оболочки отлично заменяют псевдонимы и фактически являются предпочтительным методом создания небольших команд для личного использования. Псевдонимы очень ограничены по типу поддерживаемых ими команд и функций оболочки, тогда как функции оболочки допускают все, что может быть написано сценарием. Например, если нам понравился report_disk_space функцию оболочки, которую мы разработали для нашего скрипта, мы могли бы создать аналогичную функцию с именем ds за наших .bashrc файл:
дс () {
echo «Использование дискового пространства для $ HOSTNAME» df -h
}