<Попередній | зміст | Наступна>
Підтримуйте запуск сценаріїв
Під час розробки нашої програми корисно підтримувати програму в робочому стані. Роблячи це та часто тестуючи, ми можемо виявити помилки на початку процесу розробки. Це значно полегшить налагодження проблем. Наприклад, якщо ми запустимо програму, внесемо невелику зміну, а потім знову запустимо програму і знайдемо проблему, дуже ймовірно, що джерелом проблеми є остання зміна. Додавши порожні функції, викликані заглушки на мові програміста, ми можемо перевірити логічний хід нашої програми на ранній стадії. Під час створення заглушки доцільно включити щось, що забезпечує зворотний зв’язок програмісту, який показує, що виконується логічний потік. Якщо ми зараз подивимося на результат нашого сценарію:
[me@linuxbox ~]$ сторінка sys_info
Інформаційний звіт про систему для twin2
[me@linuxbox ~]$ сторінка sys_info
Інформаційний звіт про систему для twin2
Інформаційний звіт про систему для linuxbox
Створено мною 03 19:2009:04 EDT
Інформаційний звіт про систему для linuxbox
Створено мною 03 19:2009:04 EDT
ми бачимо, що в нашому виводі після позначки часу є порожні рядки, але ми не можемо бути впевненими в причині. Якщо ми змінимо функції, щоб включити відгуки:
report_uptime () {
echo "Виконано функцію report_uptime."
повертати
}
report_disk_space () {
echo "Виконано функцію report_disk_space."
повертати
}
report_home_space () {
echo "Виконано функцію report_home_space."
повертати
}
report_uptime () {
echo "Виконано функцію report_uptime."
повертати
}
report_disk_space () {
echo "Виконано функцію report_disk_space."
повертати
}
report_home_space () {
echo "Виконано функцію report_home_space."
повертати
}
і знову запустіть скрипт:
[me@linuxbox ~]$ сторінка sys_info
Інформаційний звіт про систему для linuxbox
Інформаційний звіт про систему для linuxbox
Створено 03/20/2009 05:17:26 AM EDT, мною Функція report_uptime виконана.
Виконано функцію report_disk_space. Виконано функцію report_home_space.
[me@linuxbox ~]$ сторінка sys_info
Інформаційний звіт про систему для linuxbox
Інформаційний звіт про систему для linuxbox
Створено 03/20/2009 05:17:26 AM EDT, мною Функція report_uptime виконана.
Виконано функцію report_disk_space. Виконано функцію report_home_space.
Підтримуйте запуск сценаріїв
тепер ми бачимо, що фактично виконуються три наші функції.
Оскільки наша функціональна структура працює та працює, настав час уточнити частину коду функції. По-перше, report_uptime функція:
report_uptime () {
кіт <<- _EOF_
Час роботи системи
$(час роботи)
_EOF_
повертати
}
report_uptime () {
кіт <<- _EOF_
Час роботи системи
$(час роботи)
_EOF_
повертати
}
Це досить просто. Ми використовуємо тут документ для виведення заголовка розділу та виводу файлу час безвідмовної роботи командування, оточений теги для збереження форматування команди. The звітний_дисковий простір функція схожа:
report_disk_space () {
кіт <<- _EOF_
Використання дискового простору
$(df -h)
_EOF_
повертати
}
report_disk_space () {
кіт <<- _EOF_
Використання дискового простору
$(df -h)
_EOF_
повертати
}
Ця функція використовує дф-х команда для визначення обсягу дискового простору. Нарешті, ми побудуємо домашній_простор звіту функція:
report_home_space () {
кіт <<- _EOF_
Використання домашнього простору
$(du -sh /home/*)
_EOF_
повертати
}
report_home_space () {
кіт <<- _EOF_
Використання домашнього простору
$(du -sh /home/*)
_EOF_
повертати
}
Ми використовуємо du з командою -ш варіанти виконання цього завдання. Однак це не є повним вирішенням проблеми. Хоча він працюватиме на деяких системах (наприклад, Ubuntu), на інших він не працюватиме. Причина в тому, що багато систем встановлюють дозволи домашніх каталогів, щоб вони не були доступними для читання, що є розумним заходом безпеки. На цих системах домашній_простор звіту функція, як написано, буде
працює лише в тому випадку, якщо наш скрипт запущено з привілеями суперкористувача. Кращим рішенням було б, щоб сценарій налаштував свою поведінку відповідно до привілеїв користувача. Ми розглянемо це в наступному розділі.
Функції оболонки у вашому файлі .bashrc
Функції оболонки чудово замінюють псевдоніми і насправді є кращим методом створення невеликих команд для особистого використання. Псевдоніми дуже обмежені в типі команд і функцій оболонки, які вони підтримують, тоді як функції оболонки дозволяють будь-що, що можна створити сценарієм. Наприклад, якщо нам сподобалося звітний_дисковий простір оболонку, яку ми розробили для нашого сценарію, ми могли б створити подібну функцію з ім ds для наших .bashrc Файл:
ds () {
echo “Використання дискового простору для $HOSTNAME” df -h
}