두 개의 숫자를 입력하고 "a"를 입력하면 더하고 "s"를 입력하면 뺍니다.

두 개의 숫자를 입력하고 "a"를 입력하면 더하고 "s"를 입력하면 뺍니다.

그래서 이 코드에 문제가 있습니다. 실행하려고 하면 메시지 라인 12: 0: 명령을 찾을 수 없습니다.


#!/bin/bash

let results=0;

echo "First number please"

read num1

echo "Second mumber"

read num2

echo "Enter operation a=add, s=subtract, m=multiply, and d=divide"

read Op

if [ "$Op" = "a" ]

then

results=$((num1+num2))

elif [ "$Op" = "s" ]

then

results=$((num1-num2))

elif [ "$Op" = "d" ]

then

results=$((num1/num2))

elif [ "$Op" = "m" ]

then

results=$((num1*num2))

fi

답변1

elif는 마지막 else와 마찬가지로 유효한 키워드가 아닙니다. 사용:

If *condition 1*
    #Do Something
elif *condition 2*
    #Do Something Else
else
    #Do this as a last resort
fi

Else If는 bc의 답변과 같이 문자열로 변환하지 않을 때 else가 필요합니다.

인용하다:4 Bash If 문 예(If then fi, If then else fi, If elif else fi, 중첩 if)

답변2

쉘 스크립트를 다음 코드로 변경했는데 0으로 나누기 오류가 계속 발생하더라도 작동합니다.

#!/bin/bash

let results=0;
echo "First number please"
read num1
echo "Second number"
read num2
echo "Enter operation a=add, s=subtract, m=multiply, and d=divide"
read Op
if [ "$Op" = "a" ] ; then
    results=`echo "$num1+$num2" |bc `
elif [ "$Op" = "s" ]; then 
    results=`echo "$num1-$num2" |bc `
elif [ "$Op" = "d" ]; then 
    results=`"$num1/$num2" |echo bc`
elif [ "$Op" = "m" ] ; then 
    results=`echo "$num1*$num2"|bc`
else 
    echo "Enter operation a=add, s=subtract, m=multiply, and d=divide"
    read Op
fi;
echo $results

답변3

완료했습니다. |bc어떤 이유에서인지 제가 사용하고 있던 단말기와 호환되지 않아서 제거해야만 했습니다 . $(($num1+$num2))답변을 제공하지 않기 때문에 결과 행을 이 형식으로 넣어야 합니다 . 이전에는 연산 결과가 아니라 입력만 표시했습니다. 최종 코드는 다음과 같습니다.

let results=0;
echo "First number please"
read num1 
echo "Second mumber"
read num2
echo "Enter operation a=add, s=subtract, m=multiply, and d=divide"
read Op
if [ "$Op" = "a" ] ; then
    results="$(($num1+$num2))" 
elif [ "$Op" = "s" ]; then
    results="$(($num1-$num2))"
elif [ "$Op" = "d" ]; then
    results="$(($num1/$num2))"
elif [ "$Op" = "m" ] ; then
    results="$(($num1*$num2))"
else
    echo "Enter operation a=add, s=subtract, m=multiply, and d=divide"
    read Op
fi;
echo "$results"

관련 정보