bash script2023. 7. 11. 11:37

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/580762

 

리눅스 bash에서 정수 계산을 하는 방법이다. 이중괄호를 사용하며, $(( 계산식 )) 형태가 된다. 아래의 예시를 보자.

# 계산 결과 출력
echo $(( 4-5 ))
-1

# 계산 결과를 변수 num에 저장
num=$(( 1+2 ))
# 출력
echo "$num"
3

괄호가 포함된 조금 더 복잡한 계산도 가능하다. 아래의 예시를 보자.

# 괄호를 이용한 계산
echo $(( (1+2)*3 ))
9

계산식에 변수가 포함될 수도 있다. 이 경우에는 변수명 앞에 "$" 기호가 없음에 유의하자.

x=3
y=2
# x+y 출력
echo $(( x+y ))
5

변수에 저장된 값을 증가 또는 감소시키는 것도 가능하다. ++, --, +=, -= 등 프로그래밍 언어의 반복문에서 익숙하게 보던 연산기호를 사용하면 된다. 증가/감소 연산을 할 때 이중괄호와 변수명 앞에 "$" 기호가 없음에 유의하자.

a=1
# 변수 a의 값을 1 증가
(( a++ ))
# 출력
echo "$a"
2
# a의 값을 1 감소
(( a-- ))
# a의 값을 3 증가
(( a+=3 ))
# a의 값을 2 감소
(( a-=2 ))
# 출력
echo "$a"
2
 
expr 또는 bc를 사용해도 동일한 결과를 얻을 수 있으나, 이중괄호를 사용하면 외부의 프로그램을 실행하지 않고 bash 내부에서 계산이 이루어지므로 정수 계산이 아주 많이 반복되는 상황일 경우 속도의 향상을 기대할 수 있다. 이중괄호와 계산식 사이에 공백이 없어도 무방하나, 공백을 두는 것이 좀 더 보기에 편한 듯.

 

 

 

 

728x90
Posted by 반달가면