Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ_А.Парамонов.doc
Скачиваний:
18
Добавлен:
08.09.2019
Размер:
7.82 Mб
Скачать

2.4.3.Средства ввода-вывода

Когда программа запускается на выполнение, в ее распоряжение предоставляются три потока (или канала):

  • стандартный ввод (standard input или stdin). По этому каналу данные передаются программе;

  • стандартный вывод (standard output или stdout). По этому каналу программа выводит результаты своей работы;

  • стандартный поток сообщений об ошибках (standard error или stderr). По этому каналу программы выдают информацию об ошибках.

Задачи ввода-вывода могут быть решены посредством использования специальных команд echo, printf и read. Команда echo выдаёт на стандартное устройство вывода значения всех своих параметров. Команда printf осуществляет форматированный вывод в стандартный поток вывода.

Команда read считывает из стандартного устройства ввода строку, выделяет из неё отдельные слова (группы символов, отделяемые пробелами) и каждое слово заносит в указанные в качестве параметров соответствующие переменные. При этом если переменных меньше, чем выделенных слов, то в последнюю из них будет занесена оставшаяся часть строки.

2.4.4.Команды ветвления if-else, case

Язык оболочки bash содержит два оператора ветвления: if и case. Оператор if имеет следующий синтаксис:

if условие; then

[последовательность операторов]

elif условие; then

[последовательность операторов]

else

[последовательность операторов]

fi

Оператор ветвления сase предназначен для выбора значения из некоторого списка возможных значений и имеет следующий синтаксис:

case значение in

шаблон 1) [последовательность операторов];;

шаблон 2) [последовательность операторов];;

шаблон N) [последовательность операторов];;

esac

2.4.5.Организация циклов

В языке оболочки bash существуют следующие операторы для организации циклического выполнения команд:

  • while;

  • for;

  • select.

Оператор while осуществляет циклическое выполнение команд, пока выполняется определенное условие. Синтаксис оператора while выглядит следующим образом:

while условие; do

[последовательность операторов]

done

Оператор for выполняет последовательность команд для каждого значения из представленного списка элементов:

for имя in элемент1 элемент2 ... элементN do

[последовательность операторов]

done

Оператор select имеет такой же синтаксис как оператор for и предназначен для организации меню. Все представленные элементы выводятся на экран под порядковыми номерами, после чего осуществляется ожидание ввода пользователя.

2.4.6.Определение функций

В сценариях оболочки допустимо определять и использовать функции. Под функцией понимается именованная группа команд. Определение функции имеет следующий синтаксис:

имя_функции () {

[последовательность операторов]

}

Определение функции обязательно должно предшествовать её первому использованию. В отличие от языка С++ в языке оболочки bash отсутствуют средства предварительного объявления функции (аналоги прототипов функций). Вызов функции осуществляется путём указания её имени в качестве команды.

2.4.7.Отладка сценариев

Оболочка обеспечивает несколько встроенных команд для разрешения различных режимов поддержки отладки. Можно выделить два режима отладки:

  • проверка синтаксиса;

  • трассировка оболочки.

Для разрешения отладки сценарий должен быть запущен специальным образом. Для этого первая строка сценария должна иметь вид:

#!/bin/sh опция

В табл. Таблица 2 .8 приведены возможные значения опции.

Таблица 2.8