Это моя домашняя работа по написанию калькулятора на сценарии оболочки, но есть две ошибки, и я не могу найти решения.
echo "---------Welcome to Simple Calculator--------"
echo "p=PLUS"
echo "m=MINUS"
echo "x=MULTIPLICATION"
echo "d=DIVISION"
read -p "Enter your choice" ch
if $ch -eq p
then
echo "Enter Two Number For PLUS"
read x
read y
echo "Sonuç: $((x+y))"
elif $ch -eq m
then
echo "Enter Two Number For MINUS"
read x
read y
echo "Sonuç: $((x-y))
elif $ch -eq x
then
echo "Enter Two Number For MULTIPLICATION"
read x
read y
echo "Sonuç: $((x\*y))"
elif $ch -eq d
then
echo "Enter Two Number For DIVISION"
read x
read y
echo "scale=2;x/y" | bc
else
echo "Stopping calculator"
fi
В разделе вычитания отсутствует "
(двойная кавычка):
echo "Sonuç: $((x-y))
Использование средства проверки синтаксиса оболочки, такого как https://www.shellcheck.net/ , поможет вам выявить более очевидные синтаксические ошибки, такие как отсутствие кавычек.
Однако это не поможет с ваши предложения if ... then
, в которых отсутствует оператор проверки. Вот пример:
if $ch -eq p
Это приведет к ошибке типа «Команда не найдена» при попытке ее запуска. (Вот почему полезно включать в вопрос результат выполнения программы.)
Вероятно, вы имели в виду следующее, в котором используется тестовый оператор [[
.. ]]
, чтобы выполнить сравнение строк, а не числовое.
if [[ "$ch" == p ]]
Наконец, рекомендуется заключать в двойные кавычки все ваши переменные везде, где вы их используете, то есть "$ ch"
вместо $ ch
.