Математический скрипт Bash

Рейтинг: 0Ответов: 2Опубликовано: 13.01.2023

И здравствуйте! Продолжаю пытаться изучать Bash и есть такое задание.

При запуске надо ввести два числа. Если 1-е больше 2-го, то они складываются. Если нет - сообщение "Ошибка". Скрипт я написал и он работает. Вот его содержание:

#!/bin/bash  
read -p  "Введите  1-е число:" A  
echo "$A"
read -p "Введите  2-е число:" B
echo "$B"
if [[ $A -gt $B ]]; then
echo "Результат" $(($A+$B));
else
echo  "Error"
fi

Но я хочу в начале задать переменную по типу C=$(($A+$B)) и тут получается фигня при запуске скрипта строка 2: +: синтаксическая ошибка: ожидается операнд (неверный маркер «+»)

#!/bin/bash
C=$(($A+$B))
read -p  "Введите  1-е число:" A
echo "$A"
read -p "Введите  2-е число:" B
echo "$B"
if [[ $A -gt $B ]]; then
echo "Результат" $C;
else
echo  "Error"
fi

Если же я убираю $ у А и В C=$((A+B)), то ошибки нет, но результат выдает 0 :( Где я ошибся?

Ответы

▲ 0Принят

Складываете переменные до ввода их значений

▲ 0

Вы пытаетесь выполнить фрифметическое действие с незаданными переменными. Строка C=$(($A+$B)) преобразуется в C=$((+)) т.к. $A и $B еще не заданы в результате ошибка:

bash: +: синтаксическая ошибка: ожидается операнд (неверный маркер «+»)

Баш допускает обозначение переменных в арифметических выражениях без $ в этом случае он ищет переменную с указанным именем и использует её значение для выполнения арифм. действия, если переменная не задана автоматически подставляется 0. Поэтому конструкция C=$((A+B)) работает т.к. фактически получается C=$((0+0)). Но естественно для выполнения искомой задачи(сложить А и B) это не подходит.