Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Stsenarii.doc
Скачиваний:
0
Добавлен:
22.12.2018
Размер:
125.95 Кб
Скачать

Управляющие конструкции

Простая команда – это последовательность слов, разделенная пробелами. Первое слово является именем команды, которая будет выполняться, а остальные будут переданы ей как аргументы. Имя команды передается ей как аргумент номер 0 (т.е. имя команды является значением $0). Значение, возвращаемое простой командой - это ее статус завершения, если она завершилась нормально, или (восьмеричное) 200+статус, если она завершилась аварийно.

Список – это последовательность одной или нескольких команд, разделенных символами ;, &, && или || и быть может заканчивающаяся символом ; или &. Из четырех указанных операций ; и & имеют равные приоритеты, меньшие, чем у && и ||. Приоритеты последних также равны между собой. Символ ; означает, что команды будут выполняться последовательно, а & - параллельно. Операция && (||) означает, что список, следующий за ней будет выполняться лишь в том случае, если код завершения предыдущего конвейера нулевой (ненулевой).

Команда – это либо простая команда, либо одна из управляющих конструкций. Кодом завершения команды является код завершения ее последней простой команды.

Условный оператор

if <условие1>

then

<список1>

[ elif < условие2>

then

<список2> ]

. . .

[ else

<список3> ]

fi

Выполняется <условие1> и, если код его завершения 0, то выполняется <список1>, иначе - <условие3> и, если и его код завершения 0, то выполняется <список2>. Если же это не так, то выполняется <список3>. Части elif и else могут отсутствовать.

В качестве условий могут использоваться обычные команды, однако наиболее часто – это вызов одной или нескольких команд test в виде

test выражение

или просто [ выражение ]. Обратите внимание: пробелы, отделяющие выражение от квадратных скобок, обязательны. Подробно команда test рассмотрена ниже.

Пример. Программа, которая вызывается с двумя параметрами и определяет их сумму.

#!/bin/bash

n=$# # определяем количество переданных параметров

if [ n==0 ] # если не передано ни одного

then

echo Input a b # выводим приглашение к вводу параметров

read a b # читаем параметры в переменные а и b

elif [ n==1 ] # иначе, если передан один параметр

then

a=$1 # переменной а придаем его значение

echo Input b # выводим приглашение к вводу второго параметра

read b # читаем параметр в переменную b

elif [ n==2 ] # иначе, если переданы оба параметра

then

a=$1 переменной а придаем значение первого параметра

b=$2 # переменной b придаем значение первого параметра

else # иначе (если не передано ни одного параметра)

echo Usage: $0 [a [b]] # выводим справку по работе программы

fi # конец условного оператора

s=$((a+b)) # или s=`expr $a + $b` - вычисляем сумму чисел,

# поместив ее в переменную s

echo $s # выводим результат

Команда test

Команда test применяется для проверки условия. Формат вызова:

test <выражение>

или просто

[ <выражение> ]

Команда test вычисляет <выражение> и, если его значение – истина, возвращает код завершения 0 (true); иначе – ненулевое значение (false). Ненулевой код завершения возвращается и если опущены аргументы.

Примечание: на самом деле оболочка будет распознавать эту команду по открывающей скобке «[», как слову, соответствующему команде test. Уже этого достаточно, чтобы предупредить о распространенной ошибке: между скобками и содержащимся в них условием обязательно должны быть пробелы. Пробелы должны быть и между значениями и символом сравнения или операции (как и в команде expr) (не путать с противоположным требованием для присваивания значений переменным!).

В сценариях оболочки используются условия различных типов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]