bash를 사용하여 두 숫자를 더하거나 빼는 방법은 무엇입니까?

bash를 사용하여 두 숫자를 더하거나 빼는 방법은 무엇입니까?

숫자를 읽고 다음과 같이 작동할 수 있습니다.

echo "First number please"
read num1
echo "Second number please"
read num2
echo "Operation?"
read op

그러나 숫자를 추가하려는 모든 시도는 실패합니다.

case "$op" in
  "+")
    echo num1+num2;;
  "-")
    echo `num1-num2`;;
esac

달리기:

First number please
1
Second mumber please
2
Operation?
+

산출:

num1+num2

...또는...

echo $num1+$num2;;

# results in: 1+2    

...또는...

echo `$num1`+`$num2`;;

# results in: ...line 9: 1: command not found

"4" 대신 add("2+2") 를 추가하려고 하면 여전히 문자열이 나타나는 것 같습니다.

답변1

POSIX 셸의 산술$이중 괄호로 완성 (( )):

echo "$(($num1+$num2))"

여기에서 할당할 수도 있습니다. $내부 변수 이름에 대한 연산자 는 (())선택 사항입니다.

num1="$((num1+num2))"

게다가 expr:

expr $num1 + $num2

명령 분기/실행을 방지하므로 스크립팅에 $(())바람직합니다 expr.

답변2

기존 답변은 순수 bash이므로 이보다 빠르지만 정수만 처리할 수 있습니다. 부동 소수점 숫자를 처리해야 하는 경우 외부 프로그램을 사용해야 합니다 bc.

$ echo 'scale=4;3.1415+9.99' | bc
13.1315

scale=4bc소수점 4자리를 사용하라고 알려주세요 . 자세한 내용은 을 참조하세요 man bc.

답변3

구조를 사용할 수도 있습니다 $[ ... ]. 이 경우에는 더 빠르고 사용하기 쉬운 Bash에 내장된 메커니즘을 사용합니다. $[ 와 ] 사이의 모든 내용이 표현식으로 간주된다는 것을 알고 있으므로 변수 앞에 추가할 필요가 없습니다 $. 다시 말하지만, 우리는 *이것을 패턴으로 보는 것을 피할 필요가 없습니다 .

num1=2
num2=3
echo $[num1 + num2]
5

답변4

미니멀리스트

total=0
((total+=qty))

관련 정보