<Предыдущая | Содержание: | Следующая>
Арифметическое расширение
Оболочка позволяет выполнять арифметические операции путем расширения. Это позволяет нам использовать приглашение оболочки в качестве калькулятора:
[я @ linuxbox ~] $ эхо $ ((2 + 2))
4
[я @ linuxbox ~] $ эхо $ ((2 + 2))
4
Арифметическое раскрытие использует форму:
$ ((выражение))
в котором выражение представляет собой арифметическое выражение, состоящее из значений и арифметических операторов.
Арифметическое расширение поддерживает только целые числа (целые числа, без десятичных знаков), но может выполнять множество различных операций. Вот несколько поддерживаемых операторов:
Таблица 7-1: Арифметические операторы
Operaвr Description
+ Дополнение
- вычитание
* Умножение
/ Деление (но помните, поскольку раскрытие поддерживает только целочисленную арифметику, результаты являются целыми числами).
% Modulo, что просто означает «остаток».
** Возведение
В арифметических выражениях пробелы не имеют значения, и выражения могут быть вложенными. Например, чтобы умножить 5 в квадрате на 3:
[я @ linuxbox ~] $ эхо $ (($ ((5 ** 2)) * 3))
75
[я @ linuxbox ~] $ эхо $ (($ ((5 ** 2)) * 3))
75
Одиночные круглые скобки могут использоваться для группировки нескольких подвыражений. Используя эту технику, мы можем переписать приведенный выше пример и получить тот же результат, используя одно расширение вместо двух:
[я @ linuxbox ~] $ эхо $ (((5 ** 2) * 3))
75
[я @ linuxbox ~] $ эхо $ (((5 ** 2) * 3))
75
Вот пример использования операторов деления и остатка. Обратите внимание на эффект целого деления:
[я @ linuxbox ~] $ echo Пять разделить на два равно $ ((5/2))
Пять делить на два равно 2
[я @ linuxbox ~] $ echo с оставшимся символом $ ((5% 2)).
осталось 1.
[я @ linuxbox ~] $ echo Пять разделить на два равно $ ((5/2))
Пять делить на два равно 2
[я @ linuxbox ~] $ echo с оставшимся символом $ ((5% 2)).
осталось 1.
Более подробно арифметическое расширение рассматривается в главе 34.