Арифметические операции в Shell

ShellBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы научитесь выполнять базовые арифметические операции в программировании на Shell. Вы создадите простой скрипт для расчета общей стоимости корзины фруктов, что поможет на практике освоить использование переменных и арифметических выражений в Bash. Данная работа ориентирована на новичков, поэтому каждый шаг будет подробно объяснен.

Создание нового Bash-скрипта

Начнем с создания нового файла для нашего Bash-скрипта.

  1. Откройте терминал в WebIDE. Вы увидите приглашение командной строки, которое выглядит примерно так: labex@ubuntu:~/project$.

  2. Мы создадим наш скрипт в директории project. По умолчанию вы уже находитесь в ней, но на всякий случай убедимся в этом с помощью команды cd:

    cd ~/project

    Эта команда меняет текущую директорию на /home/labex/project.

  3. Теперь создадим новый файл с именем fruit_basket.sh. Для этого воспользуемся командой touch, которая создает пустой файл:

    touch fruit_basket.sh
  4. Откройте файл fruit_basket.sh в редакторе WebIDE. Вы можете сделать это, щелкнув по имени файла в проводнике слева.

  5. Любой Bash-скрипт должен начинаться со строки "shebang". Эта строка указывает системе, какой интерпретатор использовать для запуска скрипта. Добавьте следующую строку в начало файла:

    #!/bin/bash

    Эта строка сообщает, что скрипт должен выполняться интерпретатором Bash.

Определение переменных для стоимости фруктов

Теперь, когда файл скрипта готов, давайте определим несколько переменных для хранения стоимости различных фруктов и самой корзины.

Добавьте следующие строки в файл fruit_basket.sh:

#!/bin/bash

## Define costs
COST_PINEAPPLE=50
COST_BANANA=4
COST_WATERMELON=23
COST_BASKET=1

Разберем, что здесь происходит:

  • В Bash не нужно заранее объявлять тип переменных. Мы просто присваиваем значение имени переменной.
  • Имена переменных чувствительны к регистру. По общепринятым правилам для констант (значений, которые не меняются) часто используются заглавные буквы.
  • Вокруг знака = при присваивании значений не должно быть пробелов.
  • Эти значения представляют стоимость в центах. Например, COST_PINEAPPLE=50 означает, что ананас стоит 50 центов.
  • Нам не нужно указывать тип данных. Bash по умолчанию воспринимает их как строки, но автоматически обработает как числа при выполнении арифметических операций.

Расчет общей стоимости

Теперь, когда цены определены, давайте рассчитаем общую стоимость корзины, в которой лежат 1 ананас, 2 банана и 3 арбуза.

Добавьте следующую строку в файл fruit_basket.sh:

#!/bin/bash

## Define costs
COST_PINEAPPLE=50
COST_BANANA=4
COST_WATERMELON=23
COST_BASKET=1

## Calculate total cost
TOTAL=$((COST_PINEAPPLE + (COST_BANANA * 2) + (COST_WATERMELON * 3) + COST_BASKET))

Разберем синтаксис этой строки:

  • $(( )) — это специальный синтаксис Bash для арифметических операций. Все, что находится внутри этих двойных скобок, интерпретируется как математическое выражение.
  • Внутри таких скобок перед именами переменных не обязательно ставить знак $.
  • Мы выполняем несколько действий:
    • COST_PINEAPPLE: стоимость 1 ананаса.
    • (COST_BANANA * 2): стоимость 2 бананов.
    • (COST_WATERMELON * 3): стоимость 3 арбузов.
    • COST_BASKET: стоимость самой корзины.
  • Все эти значения суммируются, и результат сохраняется в переменной TOTAL.

Примечание: Bash работает только с целыми числами. Если бы нам понадобились вычисления с плавающей точкой (доллары и центы через точку), пришлось бы использовать дополнительные инструменты, такие как bc.

Вывод общей стоимости

Чтобы увидеть результат наших вычислений, нужно вывести итоговую сумму на экран. Добавьте следующую строку в файл fruit_basket.sh:

#!/bin/bash

## Define costs
COST_PINEAPPLE=50
COST_BANANA=4
COST_WATERMELON=23
COST_BASKET=1

## Calculate total cost
TOTAL=$((COST_PINEAPPLE + (COST_BANANA * 2) + (COST_WATERMELON * 3) + COST_BASKET))

## Display the total cost
echo "Total Cost is $TOTAL cents"

Разберем новую строку:

  • echo — это команда, которая выводит текст в терминал.
  • Текст в кавычках будет напечатан как есть, за исключением части $TOTAL.
  • Когда перед именем переменной внутри строки стоит знак $, Bash заменяет его значением этой переменной. Это называется подстановкой или раскрытием переменной (variable expansion).
  • Таким образом, если TOTAL равен 128, на выходе мы получим "Total Cost is 128 cents".

Настройка прав доступа и запуск скрипта

Скрипт готов, теперь нужно разрешить его выполнение и запустить его.

  1. В терминале сделайте файл исполняемым с помощью команды chmod:

    chmod +x ~/project/fruit_basket.sh

    Эта команда изменяет права доступа к файлу, добавляя право на выполнение (x) для текущего пользователя.

  2. Теперь запустим скрипт:

    ~/project/fruit_basket.sh

    Эта команда приказывает Bash выполнить наш файл. Часть ~/project/ указывает точный путь к скрипту.

Вы должны увидеть следующий результат:

Total Cost is 128 cents

Этот вывод подтверждает, что общая стоимость корзины (1 ананас, 2 банана, 3 арбуза и сама корзина) составляет 128 центов.

Резюме

В этой лабораторной работе вы научились выполнять арифметические операции с использованием базовых операторов в Shell. Вы создали Bash-скрипт, который рассчитывает общую стоимость корзины фруктов, определяя переменные и используя арифметические выражения. Также вы узнали, как сделать скрипт исполняемым и запустить его из командной строки.

Основные моменты, которые стоит запомнить:

  1. Bash-скрипты начинаются со строки shebang (#!/bin/bash).
  2. Присваивание значений переменным в Bash происходит без пробелов вокруг знака =.
  3. Арифметические операции выполняются внутри конструкции $(( )).
  4. Команда echo используется для вывода данных на экран.
  5. Перед запуском скрипта ему необходимо предоставить права на выполнение с помощью chmod +x.

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