Интернет Университет информационных технологий www.intuit.ru
мои курсы мои настройки моя корзина помощь
  Лекции
Основы web-технологий
Глава 1.
Введение в HTML-разметку
Глава 2.
Применение каскадных таблиц стилей
Глава 3.
JavaScript
Глава 4.
Интерфейс Web-приложений
  19.   Общие сведения
  20.   Введение в программирование CGI-скриптов и программирование скриптов на bash
  21.   Введение в программирование на P...
  22.   Введение в программирование скри...
  23.   HTML-формы
  24.   Применение методов доступа HTTP ...
      Экзамен
      Ссылки к курсу

  Общение
однокурсники
форум по курсу
вопрос преподавателю

Основы web-технологий
Глава 4. Интерфейс Web-приложений версия для печати: HTML, PDF
Лекция #20: Введение в программирование CGI-скриптов и программирование скриптов на bash Страницы: « 1 2 3 4 вопросы »

Типы данных и переменные

В bash существует только два типа данных: скаляры и одномерные массивы. При этом возможно вычисление арифметических выражений, результат выполнения которых становится значением скаляра. По-другому эти типы можно интерпретировать как текстовые строки и списки.

Существует два типа переменных: встроенные переменные bash и переменные, определяемые пользователем (переменные пользователя). Не перечисляя всех встроенных переменных, назовем наиболее употребительные:

$1-$n — аргументы командной строки скрипта;
$0 — имя скрипта;
$@ — список аргументов командной строки;
$# — число аргументов командной строки;
$IFS — список разделителей;
$PATH — путь поиска команд.

Переменные окружения, которые генерируются сервером — это переменные пользователя, импортируемые скриптом при его запуске. Пользователь внутри скрипта может установить собственные переменные:

IFS="="

В данном случае мы отменили значение по умолчанию для списка разделителей и назначили в качестве разделителя знак равенства "=". IFS — это глобальная переменная, поэтому она передается от скрипта к скрипту по умолчанию. Если требуется назначить собственную переменную и передать ее в другой скрипт, который вызывается из текущего скрипта, ее нужно будет экспортировать:

bash>QUERY_STRING=agr1+agr2+arg3; export QUERY_STRING

В данном случае в целях отладки скрипта в командной строке bash определена переменная окружения QUERY_STRING. Если запустить скрипт без предварительного экспорта, то значение этой переменной ($QUERY_STRING) будет неопределенным. Команда export позволяет передать это значение в тестируемый скрипт.

Управление потоком вычислений

Изо всех возможностей управления порядком выполнения команд в bash-скрипте мы рассмотрим только if, while и for. Пользуясь этими встроенными возможностями bash, следует иметь в виду, что логические выражения, которые применяются в качестве условий данных команд, строятся вокруг строк, а не чисел. Использовать числовое условие в bash крайне затруднительно.

if

Команда if имеет вид:

if list; then list; [elif list; then list;]...[ else list;] fi

Сначала выполняется список команд, который стоит после if. Если он завершился успешно, то выполняется список команд после первого then. Значение и логика выполнения других частей этой команды очевидна. Команда начинается символами "if" и должна закончиться символами "fi". Часть команды в квадратных скобках — это необязательные конструкции, которые при необходимости можно опустить.

Рассмотрим в качестве примера проверку метода доступа к скрипту. Для bash это может быть только GET:

#!/usr/freeware/bin/bash
echo Content-type: text/plain
echo
if test $REQUEST_METHOD = "POST"; then
echo POST;
elif test $REQUEST_METHOD = "GET"; then
echo GET;
else echo Unkown method $REQUEST_METHOD;
fi

В данном случае мы используем сравнение строк (символ "="). Если нужно сравнивать арифметические выражения, то следует использовать другие операции сравнения:

-eq — равенство операндов;
-ne — неравенство операндов;
-lt — первый операнд меньше второго;
-le — первый операнд меньше либо равен второму;
-gt — первый операнд больше второго;
-ge — первый операнд больше либо равен второму.

Команда test чрезвычайно полезна при работе с файловой системой. Например, при проверке наличия файла и прав на чтение можно использовать следующую комбинацию:

if test -r file.txt; then echo file.txt is readable; fi

Помимо проверки наличия файла и прав можно определять тип файла (-d — каталог, -f — обычный файл и т.п.).

while

Команда while позволяет выполнять список команд до тех пор, пока справедливо условие использования данного списка, которое задается аргументом while. Чаще всего в наших примерах эта команда применяется при фильтрации входного потока:

ps -axj | grep httpd | while read id pid
do
if test $id = "root"; then kill -1 $pid; fi
done

В данном случае в системе FreeBSD просматривается список активных процессов с именем httpd (HTTP-сервера), отыскивается процесс-родитель и перезапускается.

for

Вид команды for в bash отличается от обычного; когда в команде инициализируется переменная цикла, происходит проверка условия для переменной цикла и производится изменение ее значения. В bash переменная бежит по списку и выполняет цикл до тех пор, пока список не будет исчерпан:

for var; in list; do list; done

Переменная var принимает значения из списка, указанного за in, до тех пор, пока этот список не кончится. При этом для каждого значения var выполняется список команд, заключенный между "do" и "done". Примером использования for может служить разбор входных строк:

ls -ax | while read x
do
for y in $x
do
echo $y
done
done

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

Перейти к следующей странице »
версия для печати: HTML, PDF
Страницы: « 1 2 3 4 вопросы »
  Основные понятия
bash, стандартный ввод, стандартный вывод, переменные окружения, генерация HTML-страниц.
 
  Информация о лекции
В этой лекции подробно разбираются особенности программирования CGI-скриптов, общие принципы программирования CGI-скриптов на bash, определяются правила вызова скрипта, передачи ему данных и получение результатов работы скрипта для дальнейшего использования в HTTP-обмене и генерации HTML-страниц.
 
  Учебники к курсу
Основы web-технологий
Основы web-технологий
Храмцов П.Б., Брик С.А., Русак А.М., Сурин А.И.,
Интернет-университет информационных технологий - ИНТУИТ.ру.
Курс лекций посвящен основам Web-технологий. В его рамках рассматриваются язык гипертекстовой разметки HTML, язык программирования динамического контента JavaScript, спецификация разработки прикладного программного обеспечения CGI и спецификация описания стилей представления информации CSS. Допущено УМО в области прикладной информатики для студентов высших учебных заведений, обучающихся по специальности 351400 "Прикладная информатика".
Dynamic HTML
Айзекс С., BHV-Санкт-Петербург.
Настольная книга Web-мастера: эффективное применение HTML, CSS и JavaScript
Коржинский С.Н., КноРус.
Практические занятия по HTML. Краткий курс
Будилов В.А., Наука и техника.
все книги по курсу »