![구문 오류: 피연산자가 필요합니다(오류는 "=1 +"로 표시됨).](https://linux55.com/image/100460/%EA%B5%AC%EB%AC%B8%20%EC%98%A4%EB%A5%98%3A%20%ED%94%BC%EC%97%B0%EC%82%B0%EC%9E%90%EA%B0%80%20%ED%95%84%EC%9A%94%ED%95%A9%EB%8B%88%EB%8B%A4(%EC%98%A4%EB%A5%98%EB%8A%94%20%22%3D1%20%2B%22%EB%A1%9C%20%ED%91%9C%EC%8B%9C%EB%90%A8)..png)
저는 쉘 스크립팅을 처음 접했는데 왜 이 오류가 발생하는지 잘 모르겠습니다. 프로그램을 실행하고 뺄셈을 선택하면 같은 위치의 다음 하위 함수에서 오류가 발생합니다. 전체 코드를 게시했지만 처음 두 함수(add() 및 sub())에만 오류가 있는 것 같습니다.
왜 이런 일이 발생하는지에 대한 설명을 주시면 감사하겠습니다. 감사해요
function add(){
echo "mycalc $1 + $2"
(($sum = $1 + $2))
echo "The sum of $1 plus $2 is $sum"
sleep 3
clear
exit
}
function sub(){
echo "mycalc $1 - $2"
(($sub = $1 - $2))
echo "$1 minus $2 equals $sub"
sleep 3
clear
exit
}
choice=a
if [ $# = 3 ] && [ "$2" = '+' ] || [ "$2" = '-' ]
then if
[ "$2" = '+' ] && [ "$1" -le 0 ] || [ "$1" -ge 0 ] && [ "$3" -le 0 ] || [ "$3" -ge 0 ]
then add $1 $3
elif
[ "$2" = '-' ] && [ "$1" -le 0 ] || [ "$1" -ge 0 ] && [ "$3" -le 0 ] || [ "$3" -ge 0 ]
then sub $1 $3
else
echo "Main Menu"
sleep 3
clear
fi
else while [ $choice != "X" ] && [ $choice != "x" ]
do
echo "Please choose one of the following options"
echo "C) Calculate "
echo "X) Exit"
read -p "Option" choice
if [ $choice = "C" ] || [ $choice = "c" ]
then choice1=a
while [ $choice1 != "X" ] && [ $choice1 != "x" ]
do
read -p "Please enter an integer or press X to exit." choice1
if [ $choice1 = "X" ] || [ $choice1 = "x" ]
then
echo "Good bye"
sleep 3
clear
exit
elif [ $choice1 -le 0 ] || [ $choice1 -ge 0 ]
then action=a
while [ $action != "X" ] && [ $action != "x" ]
do
echo "Please select an operation"
echo "+) Addition"
echo "-) Subtraction"
echo "X) Exit"
read action
if [ $action = "X" ] || [ $action = "x" ]
then
echo "Good bye"
sleep 3
clear
exit
elif [ "$action" = "+" ] || [ "$action" = "a" ] || [ "$action" = "A" ]
then
read -p "Please enter another number " num2
add $1 $num2
elif [ $action = "-" ] || [ $action = s ] || [ $action = "S" ]
then
read -p "Please enter another number " num2
sub $1 $num2
else
echo "Invalid response, please try again" sleep 3
clear
fi
done
else
echo "Invalid response"
sleep 3
clear
fi
done
elif [ choice = "X" ] || [ choice = "x" ]
then
echo "Good bye"
sleep 3
clear
exit
else
echo "Invalid response"
sleep 3
clear
fi
done
fi
117,1 Bot
답변1
(($sum = $1 + $2))
bash 스크립트에 숫자를 추가하는 중에 오류가 발생했습니다.
사용산술 확장:
정수의 경우:
sum=$(($1 + $2))
sub=$(($1 - $2))
답변2
산술 확장 외에도 수치 연산을 수행하는 또 다른 방법은 쉘 내장 keywrod를 사용하는 것입니다 let
.
let sum=$1+$2
let sub=$1-$2
이 키워드에 대한 추가 정보: help let
또는 man bash
.