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

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь выполнять базовые арифметические операции в программировании на 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. Вы можете сделать это, кликнув на имя файла в проводнике файлов слева в 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 центов.

Резюме

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

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

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

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