Spec-Zone.ru › Bash

Арифметика оболочки

Оболочка позволяет вычислять арифметические выражения, как одно из расширений оболочки или с помощью команды (( составной команды, встроенной команды let или параметра -i встроенной команды declare.

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

id++ id--

инкремент и декремент переменной после её использования

++id --id

инкремент и декремент переменной перед её использованием

- +

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

! ~

логическое и поразрядное отрицание

**

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

* / %

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

+ -

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

<< >>

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

<= >= < >

сравнение

== !=

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

&

поразрядное И

^

поразрядное исключающее ИЛИ

|

поразрядное ИЛИ

&&

логическое И

||

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

expr ? expr : expr

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

= *= /= %= += -= <<= >>= &= ^= |=

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

expr1 , expr2

запятая

В качестве операндов разрешены переменные оболочки; расширение параметров выполняется перед вычислением выражения. Внутри выражения переменные оболочки также могут быть указаны по имени без использования синтаксиса расширения параметров. Переменная оболочки, которая является пустой или не установлена, вычисляется как 0 при ссылке по имени без использования синтаксиса расширения параметров. Значение переменной вычисляется как арифметическое выражение при ссылке на неё или при присвоении значения переменной, которой был задан атрибут integer с помощью ‘declare -i’. Нулевое значение вычисляется как 0. Переменная оболочки не обязательно должна иметь свой атрибут integer включенным, чтобы использоваться в выражении.

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

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

Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/Shell-Arithmetic.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API