BASH 스크립트가 함수에 변수를 추가하지 않습니다.

BASH 스크립트가 함수에 변수를 추가하지 않습니다.

추가 기능이 있는 내 스크립트는 읽기를 기반으로 숫자 값을 할당하는 두 개의 변수가 있는 추가 연산자(+)를 실행하지 않습니다. 다른 기능은 다른 연산자를 사용하면 잘 작동합니다.

스크립트:

#!/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스크립트를 실행할 때 오류가 발생했을 것입니다.

매개변수 확장 시 설정되지 않은 변수와 특수 매개변수 '@', '*' 이외의 매개변수는 오류로 처리합니다. 표준 오류에 오류 메시지가 기록되고 비대화형 쉘이 종료됩니다.

관련 정보