[라인 35에서 일치하는 ""를 찾는 동안 예기치 않은 EOF가 발생했으며, 라인 40에서 예기치 않은 파일 끝이 발생했습니다.]

[라인 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

답변1

다음과 같은 쉘 구문 검사기를 사용하십시오.https://www.shellcheck.net/따옴표 누락과 같은 보다 명확한 구문 오류를 식별하는 데 도움이 됩니다.

if ... then그러나 이는 테스트 연산자가 누락된 절 에는 도움이 되지 않습니다 . 예는 다음과 같습니다.

if $ch -eq p

실행하려고 하면 일종의 "명령을 찾을 수 없음" 오류와 함께 실패합니다. (그래서 질문에 프로그램 실행 결과를 포함시키는 것이 도움이 됩니다.)

아마도 의미하는 바는 숫자 비교 대신 문자열 비교를 수행하기 위해 테스트 연산자 [[.. 를 사용한다는 것입니다.]]

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

"$ch"마지막 으로 모든 변수가 사용되는 경우에는 큰따옴표를 사용하는 것이 가장 좋습니다 $ch.

답변2

빼기 부분에서 하나가 누락되었습니다 "(큰따옴표).

echo "Sonuç: $((x-y))

관련 정보