[строка 35 неожиданный EOF при поиске соответствия '"' и строка 40 неожиданный конец файла]

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

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
-2
26.01.2019, 18:21
2 ответа

В разделе вычитания отсутствует " (двойная кавычка):

echo "Sonuç: $((x-y))
2
28.01.2020, 05:14

Использование средства проверки синтаксиса оболочки, такого как https://www.shellcheck.net/ , поможет вам выявить более очевидные синтаксические ошибки, такие как отсутствие кавычек.

Однако это не поможет с ваши предложения if ... then , в которых отсутствует оператор проверки. Вот пример:

if $ch -eq p

Это приведет к ошибке типа «Команда не найдена» при попытке ее запуска. (Вот почему полезно включать в вопрос результат выполнения программы.)

Вероятно, вы имели в виду следующее, в котором используется тестовый оператор [[ .. ]] , чтобы выполнить сравнение строк, а не числовое.

if [[ "$ch" == p ]]

Наконец, рекомендуется заключать в двойные кавычки все ваши переменные везде, где вы их используете, то есть "$ ch" вместо $ ch .

3
28.01.2020, 05:14

Теги

Похожие вопросы