Bash - командный интерпретатор GNU Bourne

       

ВЫЧИСЛЕНИЕ АРИФМЕТИЧЕСКИХ ВЫРАЖЕНИЙ


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

- +

унарные минус и плюс

! ~

логическое и побитовое отрицание

**

возведение в степень

* / %

умножение, деление, получение остатка от деления

+ -

сложение, вычитание

<< >>

побитовый сдвиг влево и вправо

<= >= < >



сравнение

== !=

равенство и неравенство

&

побитовое И

^

побитовое исключающее ИЛИ

|

побитовое ИЛИ

&&

логическое И

логическое ИЛИ

выражение?выражение:выражение

условное вычисление

= *= /= %= += -=

присваивание

В качестве операндов можно использовать переменные командного интерпретатора; перед вычислением выполняется подстановка значений параметров. Значение параметра в арифметическом выражении приводится к длинному целому. Чтобы переменную командного интерпретатора можно было использовать в арифметических выражениях, ее атрибут integer устанавливать не обязательно.

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

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



Содержание раздела