반달가면 이글루에서 백업 - 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 내부에서 계산이 이루어지므로 정수 계산이 아주 많이 반복되는 상황일 경우 속도의 향상을 기대할 수 있다. 이중괄호와 계산식 사이에 공백이 없어도 무방하나, 공백을 두는 것이 좀 더 보기에 편한 듯.
'bash script' 카테고리의 다른 글
[bash: curl] curl을 이용한 FTP 자동 접속 (0) | 2023.07.11 |
---|---|
리눅스 bash 스크립트에서 텍스트 파일을 읽어서 한 줄씩 배열(array) 원소로 할당하기 (0) | 2023.07.11 |
[bash: ;] 한줄에 여러개의 명령 입력하기 (0) | 2023.07.06 |
[bash: xargs] 앞 명령어의 출력 결과를 다음 명령어의 인자(argument)로 사용하기 (0) | 2023.07.06 |
[bash: uniq] 중복되는 행 또는 중복되지 않는 행만 골라서 출력하기 (0) | 2023.07.06 |