추가 기능이 있는 내 스크립트는 읽기를 기반으로 숫자 값을 할당하는 두 개의 변수가 있는 추가 연산자(+)를 실행하지 않습니다. 다른 기능은 다른 연산자를 사용하면 잘 작동합니다.
스크립트:
#!/bin/bash
function addition {
FNUM1=$1
FNUM2=$2
RESULT=$((FNUM1+FNUM2))
echo "RESULT: $RESULT"
}
function subtraction {
FNUM1=$1
FNUM2=$2
RESULT=$((FNUM1-FNUM2))
echo "RESULT: $RESULT"
}
function multiplication {
FNUM1=$1
FNUM2=$2
RESULT=$((FNUM1*FNUM2))
echo "RESULT: $RESULT"
}
function division {
FNUM1=$1
FNUM2=$2
RESULT=$((FNUM1/FNUM2))
echo "RESULT: $RESULT"
}
clear
echo "Please select a calculation to make!"
echo "Choose how to you want to calculate two numbers"
COUNTER=0
while [ $COUNTER -eq 0 ]
do
echo ""
echo "1 - addition"
echo "2 - subtraction"
echo "3 - multiplication"
echo "4 - division"
echo "5 - QUIT"
read CHOICE
case $CHOICE in
1)
echo "YOU CHOSE ADDITION!"
echo "Enter first number: "
read NUM1
echo "Added by: "
read NUM2
addition $NUM1 $NUM
;;
2)
echo "YOU CHOSE SUBTRACTION!"
echo "Enter first number: "
read NUM1
echo "Subtracted by: "
read NUM2
subtraction $NUM1 $NUM2
;;
3)
echo "YOU CHOSE MULTIPLICATION!"
echo "Enter first number: "
read NUM1
echo "Multiplied by: "
read NUM2
multiplication $NUM1 $NUM2
;;
4)
echo "YOU CHOSE DIVISION!"
echo "Enter first number: "
read NUM1
echo "Divided by: "
read NUM2
division $NUM1 $NUM2
;;
5)
COUNTER=$(( $COUNTER + 1 ))
;;
*)
echo "You must enter a number from 1 through 5!"
esac
done
산출:
Please select a calculation to make!
Choose how to you want to calculate two numbers
1 - addition
2 - subtraction
3 - multiplication
4 - division
5 - QUIT
1
YOU CHOSE ADDITION!
Enter first number:
24
Added by:
5
RESULT: 24
FNUM1 및 FNUM2 변수에 읽은 값을 추가하는 추가 기능을 원합니다.
답변1
ilkkachu가 언급했듯이 추가 코드에 간단한 오타가 있습니다.
echo "Added by: "
read NUM2
addition $NUM1 $NUM
해야한다:
echo "Added by: "
read NUM2
addition $NUM1 $NUM2
ShellCheck에 대해 언급된 권장 사항도 마찬가지입니다.set -u
이런 종류의 오류에 대해서는. set -u
스크립트를 실행할 때 오류가 발생했을 것입니다.
매개변수 확장 시 설정되지 않은 변수와 특수 매개변수 '@', '*' 이외의 매개변수는 오류로 처리합니다. 표준 오류에 오류 메시지가 기록되고 비대화형 쉘이 종료됩니다.