<Предыдущая | Содержание: | Следующая>
Простая арифметика
Обычные арифметические операторы перечислены в таблице ниже:
Таблица 34-3: Арифметические операторы
Описание оператора
Описание оператора
+ Дополнение
- вычитание
* Умножение
/ Целочисленное деление
** Возведение
% По модулю (остаток)
Большинство из них говорят сами за себя, но целочисленное деление и по модулю требуют дальнейшего обсуждения.
Поскольку арифметика оболочки работает только с целыми числами, результатом деления всегда являются целые числа:
[я @ linuxbox ~] $ эхо $ ((5/2))
2
[я @ linuxbox ~] $ эхо $ ((5/2))
2
Это делает определение остатка в операции деления более важным:
[я @ linuxbox ~] $ эхо $ ((5% 2))
1
[я @ linuxbox ~] $ эхо $ ((5% 2))
1
Используя операторы деления и по модулю, мы можем определить, что 5, деленное на 2, дает 2 с остатком 1.
Вычисление остатка полезно в циклах. Это позволяет выполнять операцию с заданными интервалами во время выполнения цикла. В приведенном ниже примере мы отображаем строку чисел, выделяя каждое число, кратное 5:
#! / Bin / Баш
# по модулю: продемонстрировать оператор по модулю для ((i = 0; i <= 20; i = i + 1)); делать
остаток = $ ((i% 5))
если ((остаток == 0)); затем printf "<% d>" $ i
еще
printf "% d" $ i
фи сделано
printf "\ n"
#! / Bin / Баш
# по модулю: продемонстрировать оператор по модулю для ((i = 0; i <= 20; i = i + 1)); делать
остаток = $ ((i% 5))
если ((остаток == 0)); затем printf "<% d>" $ i
еще
printf "% d" $ i
фи сделано
printf "\ n"
При выполнении результаты выглядят так:
[я @ linuxbox ~] $ форма
<0> 1 2 3 4 <5> 6 7 8 9 <10> 11 12 13 14 <15> 16 17 18 19 <20>
[я @ linuxbox ~] $ форма
<0> 1 2 3 4 <5> 6 7 8 9 <10> 11 12 13 14 <15> 16 17 18 19 <20>