리눅스 쉘스크립트는 기본적으로 변수를 문자열로 취급하기 때문에, 정수형 산술연산(-, +, *, /, % 등)을 하기 위해서는 아래의 세가지 방법을 사용할 수 있다.
1. 선언시 정수형으로 선언
declare -i 변수명
으로 변수 선언시, 해당 변수는 정수로 취급하며, 문자열을 넣으면 0이 된다. 기본값은 0이다.
이렇게 선언된 변수는 바로 산술연산이 가능하다.(산술식의 결과를 대입할 수도 있고, 변수끼리 산술연산도 가능하다)
e.g.
declare -i num
num=10+10
echo $num # 20이 출력됨
2. let 명령어 사용
declare -i 로 선언된 변수가 아니더라도,
let 산술연산 대입식
을 사용하여 산술연산이 가능하다.
e.g.
num=10
let num=num+10 # let "num = num + 10" 쌍따옴표로 묶어도 연산이 되며, 띄어쓰기도 넣을 수 있다.
echo $num # 20이 출력됨
3. 쌍괄호 사용
쌍괄호로 산술연산식을 감싸면 let 명령어를 사용한 것과 동일하다.
e.g.
num=10
((num=num+10)) # ((num = num + 10)) 띄어쓰기도 넣을 수 있다.
echo $num # 20이 출력됨
4. expr 명령어 사용
expr 값 연산자 값 or expr $[값 연산자 값]
e.g.
expr 10 + 20 # 30
expr 2 \* 3 # 6. *연산자를 와일드카드를 의미하므로 escape 해줘야 한다.
expr $[2 * 3] # expr $[2*3], echo $[2*3], echo $[2 * 3] 과 동일. $[] 로 감싸면 escape 할 필요 없다.
'Linux' 카테고리의 다른 글
[LINUX] 문자열 표현식 판단 test, 싱글브라켓, 더블브라켓 차이 (0) | 2022.08.17 |
---|---|
[LINUX] 헷갈리는 표현식 및 정수연산방법 (0) | 2022.08.09 |
[LINUX] 쉘스크립트 위치파라미터 $*와 $@의 차이 (0) | 2022.08.09 |
[LINUX] 자주쓰는 sed, awk 명령어 형식 정리 (0) | 2022.07.11 |
[LINUX] 자주쓰는 명령어 정리 (0) | 2022.01.30 |