Математический скрипт Bash
И здравствуйте! Продолжаю пытаться изучать 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 :(
Где я ошибся?
Ответы (2 шт):
Вы пытаетесь выполнить фрифметическое действие с незаданными переменными. Строка C=$(($A+$B)) преобразуется в C=$((+)) т.к. $A и $B еще не заданы в результате ошибка:
bash: +: синтаксическая ошибка: ожидается операнд (неверный маркер «+»)
Баш допускает обозначение переменных в арифметических выражениях без $ в этом случае он ищет переменную с указанным именем и использует её значение для выполнения арифм. действия, если переменная не задана автоматически подставляется 0. Поэтому конструкция C=$((A+B)) работает т.к. фактически получается C=$((0+0)). Но естественно для выполнения искомой задачи(сложить А и B) это не подходит.