[ Страница назад | Страница вперед | Содержание | Индекс | Домой | Юридическая информация | Поиск ]

Руководство пользователя: Операционная система и устройства


Арифметические вычисления в оболочке Korn (POSIX)

Стандартная встроенная команда let оболочки Korn (POSIX) позволяет выполнять арифметические операции над целыми числами. Константы имеют формат [Основание]Число. Параметр Основание представляет собой десятичное число в диапазоне от 2 до 36 включительно, указывающее основание системы счисления. В параметре Число указывается число в этой системе. Если параметр Основание не указан, принимается значение 10.

Синтаксис, приоритет операторов и ассоциативность операторов в арифметических выражениях подчиняются правилам языка C. Поддерживаются все операторы, кроме двойного плюса (++), двойного дефиса (--), вопросительного знака с двоеточием (?:) и запятой (,). В следующей таблице перечислены допустимые операторы оболочки Korn (POSIX) в порядке убывания приоритета:

Арифметические операторы оболочки Korn
Оператор Определение
- Унарный минус
! Логическое отрицание
~ Поразрядное отрицание
* Умножение
/ Деление
% Остаток
+ Сложение
- Вычитание
<<, >> Сдвиг влево, сдвиг вправо
<=,>=, <>, ==, != Сравнение
& Поразрядное И
^ Поразрядное исключающее ИЛИ
| Поразрядное ИЛИ
&& Логическое И
|| Логическое ИЛИ
= *=, /=, &= +=, -=, <<=, > >=, &=, ^=, |= Присвоение

Многие арифметические операторы, такие как *, &, < и >, в оболочке Korn (POSIX) интерпретируются специальным образом. Такие символы должны быть заключены в кавычки. Например, для умножения текущего значения переменной y на 5 и присвоения нового значения переменной y укажите выражение:

let "y = y * 5"

Заключение выражения в кавычки отменяет специальное значение символа *.

Операции в команде let можно объединять в группы скобками. Например, в выражении:

let "z = q * (z - 10)"

переменная q будет умножено на уменьшенное на 10 значение переменной z.

Если необходимо вычислить только одно выражение, оболочка Korn (или POSIX) допускает альтернативную форму команды let. Оболочка рассматривает команды, заключенные в (( )), как выражения в кавычках. Таким образом, выражение

((x = x / 3))

эквивалентно

let "x = x / 3"

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

Внутреннее числовое представление именованного параметра можно указать с помощью флага -i специальной встроенной команды typeset. С флагом -i арифметические вычисления выполняются над каждым значением, присваиваемым именованному параметру. Если основание системы счисления не указано, оно определяется по первому присвоенному значению. Это основание применяется только при подстановке параметра.


[ Страница назад | Страница вперед | Содержание | Индекс | Домой | Юридическая информация | Поиск ]