Unix / Linux - Встроенные математические функции Shell

Привет,future programmers! Сегодня мы отправимся в увлекательное путешествие в мир встроенных математических функций Unix/Linux shell. Не волнуйтесь, если вы новички в программировании - я проведу вас через каждый шаг с четкими объяснениями и множеством примеров. Погружаемся!

Unix / Linux - Builtin Functions

Что такое встроенные функции Shell?

Before мы углубимся в математические функции, давайте поймем, что такое встроенные функции Shell. Это команды, интегрированные в саму shell, то есть они не требуют отдельной установки. Они всегда под рукой, готовые помочь вам выполнять различные задачи эффективно.

Почему использовать математические функции в скриптах Shell?

Вы можете задаться вопросом: "Зачем нам数学 в скриптах Shell?" Представьте, что вы пишете скрипт для расчета своего месячного бюджета или для анализа некоторых данных. Вот где эти функции могут пригодиться! Они позволяют вам выполнять вычисления прямо в вашем скрипте, экономя ваше время и силы.

Общие встроенные математические функции Shell

Давайте рассмотрим некоторые из наиболее часто используемых математических функций в Unix/Linux shell. Мы будем использовать shell Bash для наших примеров, так как он широко используется и предустановлен на многих системах.

1. Основные арифметические операции

Bash предоставляет несколько способов выполнения основных арифметических операций. Давайте посмотрим на них:

a. Использование команды expr

#!/bin/bash
a=10
b=5
sum=$(expr $a + $b)
echo "Сумма $a и $b равна: $sum"

Этот скрипт выведет: Сумма 10 и 5 равна: 15

Здесь expr используется для вычисления выражения $a + $b. Результат затем сохраняется в переменную sum.

b. Использование двойных скобок (( ))

#!/bin/bash
a=10
b=5
((sum = a + b))
echo "Сумма $a и $b равна: $sum"

Этот метод короче и часто предпочтителен для простых арифметических операций.

2. Более сложные математические операции

Для более сложных вычислений Bash предоставляет команду bc. Хотя это и не strictly встроенная функция, она часто доступна и очень полезна.

#!/bin/bash
pi=$(echo "scale=2; 22/7" | bc)
echo "Значение pi (до 2 знаков после запятой) равно: $pi"

Вывод: Значение pi (до 2 знаков после запятой) равно: 3.14

Здесь scale=2 устанавливает количество знаков после запятой, а bc выполняет деление.

Таблица общих математических операций

Вот удобная таблица математических операций, которые вы можете выполнять в Bash:

Операция Символ Пример
Сложение + echo $((5 + 3))
Вычитание - echo $((10 - 4))
Умножение * echo $((6 * 7))
Деление / echo $((20 / 5))
Остаток от деления (Modulus) % echo $((17 % 3))
Возведение в степень ** echo $((2 ** 3))

Продвинутые математические функции

Теперь, когда мы рассмотрели основы, давайте explore более продвинутые математические функции. Они не встроены в сам Bash, но часто используются в скриптах через команду bc.

1. Корень квадратный

#!/bin/bash
number=16
sqrt=$(echo "scale=2; sqrt($number)" | bc)
echo "Корень квадратный из $number равен: $sqrt"

Вывод: Корень квадратный из 16 равен: 4.00

2. Синус и косинус

#!/bin/bash
angle=30
sin=$(echo "scale=4; s($angle * 3.14159 / 180)" | bc -l)
cos=$(echo "scale=4; c($angle * 3.14159 / 180)" | bc -l)
echo "Синус $angle градусов равен: $sin"
echo "Косинус $angle градусов равен: $cos"

Вывод:

Синус 30 градусов равен: .4999
Косинус 30 градусов равен: .8660

Обратите внимание на опцию -l с bc, которая загружает математическую библиотеку для тригонометрических функций.

Практический пример: Конвертер температур

Давайте применим наши новые знания к практическому примеру - конвертеру температур!

#!/bin/bash

echo "Конвертер температур"
echo "1. Цельсий в Фаренгейты"
echo "2. Фаренгейты в Цельсий"
read -p "Введите ваш выбор (1/2): " choice

case $choice in
1)
read -p "Введите температуру в Цельсиях: " celsius
fahrenheit=$(echo "scale=2; ($celsius * 9/5) + 32" | bc)
echo "$celsius°C равен $fahrenheit°F"
;;
2)
read -p "Введите температуру в Фаренгейтах: " fahrenheit
celsius=$(echo "scale=2; ($fahrenheit - 32) * 5/9" | bc)
echo "$fahrenheit°F равен $celsius°C"
;;
*)
echo "Некорректный выбор"
;;
esac

Этот скрипт демонстрирует, как мы можем использовать математические функции в реальном сценарии. Он позволяет пользователям конвертировать температуры между Цельсиями и Фаренгейтами.

Заключение

Поздравления! Вы только что сделали свои первые шаги в мир скриптинга shell и математических функций. Помните, что практика makes perfect. Попробуйте создать свои собственные скрипты с использованием этих функций - может быть, калькулятор или скрипт для анализа данных.

Пока вы продолжаете свое путешествие в программировании, вы обнаружите, что эти базовые математические операции являются основой для более сложных вычислений. Продолжайте исследовать, продолжайте учиться и, самое главное, получайте удовольствие!

Счастливого кодирования, future tech wizards! ??‍??‍?

Credits: Image by storyset