<Предыдущая | Содержание: | Следующая>
Подведение итогов
Благодаря добавлению позиционных параметров мы теперь можем писать достаточно функциональные скрипты. Для простых повторяющихся задач позиционные параметры позволяют писать очень полезные функции оболочки, которые можно разместить в пользовательском интерфейсе. .bashrc .
В нашем sys_info_page Программа стала сложнее и изощреннее. Вот полный список с выделенными самыми последними изменениями:
#! / Bin / Баш
# sys_info_page: программа для вывода страницы с информацией о системе
PROGNAME=$(базовое имя $0)
TITLE = "Отчет о системной информации для $ HOSTNAME" CURRENT_TIME = $ (date + "% x% r% Z")
TIMESTAMP = "Создано $ CURRENT_TIME, $ USER"
report_uptime () { cat <<- _EOF_
Время работы системы
$ (время безотказной работы)
_EOF_ возврат
#! / Bin / Баш
# sys_info_page: программа для вывода страницы с информацией о системе
PROGNAME=$(базовое имя $0)
TITLE = "Отчет о системной информации для $ HOSTNAME" CURRENT_TIME = $ (date + "% x% r% Z")
TIMESTAMP = "Создано $ CURRENT_TIME, $ USER"
report_uptime () { cat <<- _EOF_
Время работы системы
$ (время безотказной работы)
_EOF_ возврат
}
report_disk_space () { cat <<- _EOF_
Использование дискового пространства
$ (df -h)
_EOF_ возврат
}
отчет_домашнее_пространство () {
если [[$ (id -u) -eq 0]]; затем cat << - _EOF_
Использование домашнего пространства (все пользователи)
$ (du -sh / home / *)
_EOF_
еще
кошка << - _EOF_
Использование домашнего пространства ($ USER)
$ (du -sh $ HOME)
_EOF_
fi возвращение
}
Применение () {
echo "$PROGNAME: использование: $PROGNAME [-f файл | -i]" return
}
write_html_page () { cat <<- _EOF_
$ TITLE
$ TITLE
$ TIMESTAMP
$ (report_uptime)
$ (report_disk_space)
$ (report_home_space)
_EOF_ возврат
}
# параметры командной строки процесса
}
report_disk_space () { cat <<- _EOF_
Использование дискового пространства
$ (df -h)
_EOF_ возврат
}
отчет_домашнее_пространство () {
если [[$ (id -u) -eq 0]]; затем cat << - _EOF_
Использование домашнего пространства (все пользователи)
$ (du -sh / home / *)
_EOF_
еще
кошка << - _EOF_
Использование домашнего пространства ($ USER)
$ (du -sh $ HOME)
_EOF_
fi возвращение
}
Применение () {
echo "$PROGNAME: использование: $PROGNAME [-f файл | -i]" return
}
write_html_page () { cat <<- _EOF_
$ TITLE
$ TITLE
$ TIMESTAMP
$ (report_uptime)
$ (report_disk_space)
$ (report_home_space)
_EOF_ возврат
}
# параметры командной строки процесса
Подведение итогов
интерактивный=
имя файла=
в то время как [[ -n $1 ]]; сделать дело на 1 доллар
-ф | --файл)
сдвиг
имя файла = $ 1
;;
интерактивный=
имя файла=
в то время как [[ -n $1 ]]; сделать дело на 1 доллар
-ф | --файл)
-я | --интерактивный) интерактивный=1
;;
-ч | --help) выход из использования
;;
*) использование >&2
выйти из 1
;;
смена эсак
сделанный
# интерактивный режим
если [[ -n $interactive ]]; тогда пока правда; делать
read -p "Введите имя выходного файла: " имя файла if [[ -e $filename ]]; затем
read -p "$filename' существует. Перезаписать? [y/n/q] > " случай $REPLY в
Д|у) перерыв
;;
Q|q) echo «Программа завершена». Выход
;;
*) продолжать
;;
ESAC
элиф [[ -z $имя_файла ]]; затем продолжай
еще
перерыв
fi
сделанный
fi
# вывод html-страницы
если [[ -n $имя_файла]]; затем
если коснуться $filename && [[ -f $filename ]]; затем write_html_page > $filename
еще
-я | --интерактивный) интерактивный=1
;;
-ч | --help) выход из использования
;;
*) использование >&2
выйти из 1
;;
смена эсак
сделанный
# интерактивный режим
если [[ -n $interactive ]]; тогда пока правда; делать
read -p "Введите имя выходного файла: " имя файла if [[ -e $filename ]]; затем
read -p "$filename' существует. Перезаписать? [y/n/q] > " случай $REPLY в
Д|у) перерыв
;;
Q|q) echo «Программа завершена». Выход
;;
*) продолжать
;;
ESAC
элиф [[ -z $имя_файла ]]; затем продолжай
еще
перерыв
fi
сделанный
fi
# вывод html-страницы
если [[ -n $имя_файла]]; затем
если коснуться $filename && [[ -f $filename ]]; затем write_html_page > $filename
еще
echo "$PROGNAME: невозможно записать файл '$filename'" >&2 выход 1
фи еще
write_html_page
fi
echo "$PROGNAME: невозможно записать файл '$filename'" >&2 выход 1
фи еще
write_html_page
fi
Мы еще не закончили. Есть еще много вещей, которые мы можем сделать и улучшить.