- 12.8. Команды выполнения математических операций
- Глава 8. Операции и смежные темы
- Занимательная математика командной строки
- bash калькулятор целочисленный
- bc мэдскиллз
- Замер производительности процессора с bc
- Скрипты bc
- awk: арифмометр и гадалка
- В заключение
- Математика в BASH с помощью bc
- Использование bc для базовых операций:
- Округление результата
- Если же у Вас есть файл с набором математических операций
- Использование результата последней операции:
- Тригонометрические функции:
- Создание переменных на основе результатов вычислений:
- You May Also Enjoy
- Jenkins auth over AWS Cognito
- Copy the Jenkins job
- Установка nginx из исходников
- Уникальные IP адреса в access.log Apache
- Использование арифметических операторов в сценариях Bash
- Выполнение сложения и вычитания в сценариях bash
- Выполнение умножения и деления в сценариях bash
- Использование power и остатка (по модулю)
- Время практики: создание сценария bash для конвертера степеней
12.8. Команды выполнения математических операций
Разложение целого числа на простые множители.
Bash не в состоянии выполнять действия над числами с плавающей запятой и не содержит многих важных математических функций. К счастью существует bc.
Универсальная, выполняющая вычисления с произвольной точностью, утилита bc обладает некоторыми возможностями, характерными для языков программирования.
Синтаксис bc немного напоминает язык C.
Поскольку это утилита UNIX, то она может достаточно широко использоваться в сценариях на языке командной оболочки, в том числе и в конвейерной обработке данных.
Ниже приводится простой шаблон работы с утилитой bc в сценарии. Здесь используется прием подстановки команд.
Пример 12-32. Ежемесячные выплаты по займу
Пример 12-33. Перевод чисел из одной системы счисления в другую
Один из вариантов вызова bc — использование вложенного документа, внедряемого в блок с подстановкой команд. Это особенно актуально, когда сценарий должен передать bc значительный по объему список команд и аргументов.
Пример 12-34. Пример взаимодействия bc со «встроенным документом»
Пример 12-35. Вычисление числа «пи»
Утилита dc ( desk calculator) — это калькулятор, использующий «Обратную Польскую Нотацию», и ориентированный на работу со стеком.
Многие стараются избегать испоьзования dc, из-за непривычной формы записи операндов и операций. Однако, dc имеет и своих сторонников.
Пример 12-36. Преобразование чисел из десятичной в шестнадцатиричную систему счисления
Изучение страниц info dc позволит детальнее разобраться с утилитой. Однако, отряд «гуру», которые могут похвастать своим знанием этой мощной, но весьма запутанной утилиты, весьма немногочислен.
Пример 12-37. Разложение числа на простые множители
Еще один способ выполнения математических операций, над числами с плавающей запятой, состоит в создании сценария-обертки, использующего математические функции awk.
Пример 12-38. Расчет гипотенузы прямоугольного треугольника
Источник
Глава 8. Операции и смежные темы
присваивание
Инициализация переменной или изменение ее значения
Универсальный оператор присваивания, пригоден как для сравнения целых чисел, так и для сравнения строк.
оператор | Описание |
---|---|
+ | прибавление |
– | субстракция |
* | умножение |
/ | целочисленное деление (без десятичных чисел) |
% | деление модуля (дает только остаток) |
** | возведение в степень (x в степени y) |
Выполнение сложения и вычитания в сценариях bash
Давайте создадим bash-скрипт с именем add.sh , который просто добавит два размера файла (в байтах) и отобразит результат.
К настоящему времени вы должны быть знакомы с аргументами в сценариях bash. Надеюсь, вы также знакомы с командами cut и du.
Команда du дает вам размер файла. В выводе указывается как размер файла, так и имя файла. Здесь команда cut используется для извлечения первого столбца (т.е. размера файла) из вывода. Выходные данные команды du передаются команде cut с использованием перенаправления конвейера.
Обратите внимание, что вы передадите два имени файла в качестве аргументов сценарию. Например, здесь мы запускаем сценарий и передаю два файла /etc/passwd и /etc/group в качестве аргументов:
Наиболее важное направление в сценарии addition.sh:
Где вы использовали оператор + для сложения двух чисел $fs1 и $fs2. Также обратите внимание, что для вычисления любого арифметического выражения вы должны заключить его в двойные круглые скобки следующим образом:
Вы также можете использовать оператор минус (-) для вычитания. Например, значение под-переменной в следующем операторе будет равно семи:
Выполнение умножения и деления в сценариях bash
Давайте создадим сценарий bash с именем giga2mega.sh, который преобразует гигабайты (ГБ) в мегабайты (МБ):
Теперь давайте запустим скрипт, чтобы узнать, сколько мегабайт в четырех гигабайтах:
Здесь мы использовали оператор умножения (*), чтобы умножить количество гигабайт на 1024, чтобы получить эквивалент в мегабайтах:
В этот скрипт легко добавить дополнительные функции для преобразования гигабайт (ГБ) в килобайты (КБ):
Мы позволим вам преобразовать гигабайты в байты в качестве практического упражнения!
Вы также можете использовать оператор деления (/), чтобы разделить два числа. Например, значение переменной div в следующем операторе будет равно пяти:
Обратите внимание, что это целочисленное деление, поэтому все дроби теряются. Например, если вы разделите 5 на 2, вы получите 2, что, конечно, неверно:
Чтобы получить десятичный вывод; вы можете использовать команду bc. Например, чтобы разделить 5 на 2 с помощью bc команды, вы можете использовать следующий оператор:
Обратите внимание, что вы можете использовать и другие операторы с bc командой всякий раз, когда имеете дело с десятичными числами.
Использование power и остатка (по модулю)
Создадим калькулятор мощности! Мы собираемся создать скрипт с именем power.sh, который будет принимать два числа a и b (в качестве аргументов) и будет отображать результат возведения a в степень b:
Обратите внимание, что мы используем оператор возведения в степень (**) , чтобы вычислить результат a в степени b.
Давайте выполним несколько запусков скрипта, чтобы убедиться, что он дает правильные ответы:
Вы также можете использовать оператор по модулю (%) для вычисления целочисленных остатков. Например, значение переменной rem в следующем операторе будет равно 2:
Остаток здесь 2, потому что 5 в 17 три раза, а два остается!
Время практики: создание сценария bash для конвертера степеней
Давайте завершим это руководство, создав скрипт с именем c2f.sh , который преобразует градусы Цельсия в градусы Фаренгейта, используя уравнение ниже:
Это будет хорошее упражнение для вас, чтобы попробовать новые вещи, которые вы только что узнали в этом руководстве по bash.
Вот решение (может быть несколько способов добиться того же результата):
Мы использовали команду bc, потому что мы имеем дело с десятичными знаками, и мы также использовали “scale = 2” для отображения вывода в двух десятичных точках.
Давайте сделаем несколько запусков скрипта, чтобы убедиться, что он выводит правильные результаты:
Отлично! На этом мы подошли к концу этой статьи. Надеюсь, вам понравилось заниматься математикой с помощью bash.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник