![두 개의 숫자를 입력하고 "a"를 입력하면 더하고 "s"를 입력하면 뺍니다.](https://linux55.com/image/56522/%EB%91%90%20%EA%B0%9C%EC%9D%98%20%EC%88%AB%EC%9E%90%EB%A5%BC%20%EC%9E%85%EB%A0%A5%ED%95%98%EA%B3%A0%20%22a%22%EB%A5%BC%20%EC%9E%85%EB%A0%A5%ED%95%98%EB%A9%B4%20%EB%8D%94%ED%95%98%EA%B3%A0%20%22s%22%EB%A5%BC%20%EC%9E%85%EB%A0%A5%ED%95%98%EB%A9%B4%20%EB%BA%8D%EB%8B%88%EB%8B%A4..png)
그래서 이 코드에 문제가 있습니다. 실행하려고 하면 메시지 라인 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"