Арифметическая оценка в bash

Shell позволяет оценивать арифметические выражения при определенных обстоятельствах. Оценка производится в фиксированной ширине целых чисел без проверки на переполнение, хоть деление на 0 прерывается и отмечается как ошибка. Операторы, их приоритет, ассоциативность и значения такие же как в языке Си. Следующий список операторов сгруппирован по уровням с одинаковым приоритетом операторов. Уровни располагаются в порядке убывания приоритета.

id++ id— Переменная post-increment и post-decrement.

++id —id Переменная pre-increment и pre-decrement.

— + Унарный минус и плюс.

! ~ Логическое и побитовое отрицание.

** Возведение в степень.

* / % Умножение, деление, остаток.

+ — Сложение, вычитание.

< < >> Левый и правый побитовый сдвиг.

< = >= <> Сравнение.

== != Равенство и неравенство.

& Побитовое И.

^ Побитовое исключающее ИЛИ.

| Побитовое ИЛИ.

&& Логическое И.

|| Логическое ИЛИ.

expr?expr:expr Условный оператор.

= *= /= %= += -= < <= >>= &= ^= |= Назначение.

expr1 , expr2 запятая.

Shell переменные в качестве операндов; параметр расширения выполняется перед вычислением выражения. Внутри выражений, переменный shell могут также ссылаться на имена не используя синтаксис параметра расширения. Shell переменная null или unset оценивается в 0, когда обращается по имени, не используя синтаксис параметра расширения. Значение переменной вычисляется как среднее арифметическое выражение, когда на него ссылается или когда переменная, которой было задано целое число атрибутов с помощью declare -i присвоенное значение. Значение null вычисляется в 0. Shell переменная не должна иметь включаемый атрибут целое число, которое будет использоваться в выражении.

Константы, начинающиеся с 0, интерпретируются как восьмеричные числа. Начинающиеся с 0x или 0X обозначает шестнадцатеричное число. Кроме того, числа вида [base#]n, где base является десятичным числом от 2 до 64, представляющее арифметическое base, и «n» представляет собой число в этой base. Если base# опускается то base 10 используется. Цифры больше 9 представлены строчными буквами, заглавными буквами, @ и _ именно в таком порядке. Если base меньше или равно 36, прописные и строчные буквы могут быть использованы как взаимозаменяемые для представления чисел от 10 до 35.

Операторы вычисляются в порядке приоритета. Подвыражения в круглых скобках вычисляются первыми и могут не подчинятся правилам приоритета указанным выше.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *