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

1.2. Граматика языка shell

Единицей действия в языке является команда. Различаются одиночные команды, списки команд, конвейеры, составные команды, управляющие конструкции. Если специально не оговаривается, значением команды служит выходной статус (код завершения) последней выполненной команды.

1.2.1. ОДИНОЧНЫЕ КОМАНДЫ.

Это любая внешняя или встроенная команда или операция присваивания за которой следует необязательная переадресация ввода/вывода.

1.2.2. КОНВЕЙЕРЫ КОМАНД.

Последовательность команд соединенных управляющей операцией "|",образует конвейер. Стандартный выход каждой команды конвейера, кроме последней, направляется в стандартный ввод следующей команды.

1.2.3. СПИСКИ КОМАНД.

Один или несколько конвейеров соединенных управляющими операциями ";" "&" "&&" "||" образуют список команд. Функции операций:

; - последовательное выполнение конвейеров;

& - асинхронное выполнение; оба конвейера выполняются асинхронно не дожидаясь завершения друг друга;

&& - конвейер стоящий после "&&" выполняется только в том случае, если предшествующий конвейер вырабатывает нулевое значение статуса("истина"); || - конвейер стоящий после "||" выполняется только в том случае, если конвейер стоящий до "||", вырабатывает ненулевое значения статуса ("ложь").

1.2.4. КОМАНДНЫЕ ПОДСТАНОВКИ.

Командные подстановки позволяют вместо команды подставить выходное сообщение данной команды; имя команды заключается в круглые скобки которым предшествует символ "$":

$(command)

1.2.5. МАНИПУЛЯЦИЯ С ИМЕНАМИ ФАЙЛОВ.

Для манипуляции с именами файлов используют три символа "*" "?" []. Если один или несколько из этих символов используется в командной строке, каждое слово содержащее символ трактуется как шаблон который заменяется набором имен включающих данный образ.

* - заменяет любую символьную строку;

? - заменяет один символ в строке;

[...] заменяет один символ который находиться в лексическом интервале указанном в скобках.

Пример, [a-c] - один символ заменяется каждым символом из интервала a-c;

Вариантом данной конструкции является использования функции дополнения "!".

Пример [!abc] - один символ заменяется всеми символами за исключением a b c.

1.2.1. ВСПОМОГАТЕЛЬНЫЕ КОМАНДЫ

КОМАНДА test.

test expression [expression]

test команда вычисляет выражение и возвращает нулевой статус если

"истина" и ненулевой статус если "ложь". Эта команда обычно используется в управляющих конструкциях if, while.

Следующие выражения допустимы (выборочно):

-r file - файл существует и доступен по чтению;

-w file - файл существует и доступен по записи;

-x file - файл существует и доступен по исполнению;

-f file - файл есть регулярный файл;

-d file - файл есть директорий;

file1 -ot file2 - файл1 старше чем файл2;

string - строка не пустая;

string1 = string2 - строка1 равна строке2;

string1 != string2 - строка2 не равна строке2;

num1 -eq num2 - число1 равно числу2;

num1 -ne num2 - число1 не равно числу2;

num1 -ge num2 - число1 больше или равно числу2;

num1 -gt num2 - число1 больше числа2;

num1 -le num2 - число1 меньше или равно числу2;

num1 -lt num2 - число1 меньше числа2

Возможны также комбинации выражений связанные логическими операциями:

expr -o expr - логическое "ИЛИ";

expr -a expr - логическое "И";

!expr - логическое отрицание;

(expr) - группировка.

КОМАНДА read.

read [-r] var...

Команда read читает строку из стандартного устройства ввода (консоли), строка состоит из нескольких слов разделенных допустимыми разделителями. Первое слово назначается к переменной var, второе слово ко второй переменной var и так далее. Если специфицирована опция -r то символ "\" трактуется, как и любой другой символ, в противном случае он считается escape-символом.

Переменные в интерпретаторе shell имеют строковый тип, но есть средство (команда expr) позволяющее выполнять арифметические операции над текстовыми переменными, заданными в виде целых чисел.