728x90
expr & bc 명령어
- 쉘에서는 숫자와 문자를 구분하지 않기 때문에 여타 프로그래밍 언어 처럼 숫자 연산이 간단하지 않다.
- 쉘에서 숫자를 연산하는 방법은 대표적으로 expr 와 bc 가 있다.
- expr은 bash 내장 명령어로 정수만 연산 가능하다.
- bc는 복잡한 공학용 산술과 실수 계산이 가능하다.
- 여기까지 보면, 차라리 bc만 쓰면 될것을 굳이 expr을 알아야 하는지 의문이겠지만,
- 정수 연산이 많은 프로그래밍을 할 경우 내장 명령어인 expr을 사용하는것이 속도면에서 효율적이기 때문이다.
expr 명령어
expr 명령은 정수 계산을 하기 위해 사용되는 명령이다.
계산식을 쓸 때 연산기호와 정수 사이 반드시 공백으로 띄어쓰기를 해야 한다는 주의 점이 있다.
$ expr 4 \* 3
12
$ expr 4 / 3
1
$ expr 4 % 3
1
#!/usr/bin/bash
# 34*51의 결과를 result 변수에 저장
result=`expr 34 \* 51`
echo "$result"
Tip
expr 명령어를 배쉬에서 사용할때 역따옴표로 묶는걸 잊지말자
bc 명령어
bc 명령은 expr 명령처럼 수치 연산을 하기 위해 사용되는 명령이지만, 차이점이 있다면 실수 연산과 사인, 코사인 등 공학용 계산기에 나오는 연산 기능을 사용할 수 있다.
여러 수식들을 괄호로 묶고 나누고 곱할때 expr을 그대로 사용하면 계산이 제대로 안되기 때문에 bc 명령어를 사용하는 것이다.
문법도 역시 다른데, 산술식 뒤에 파이프로라인(|)으로 계산식을 넘겨서 처리한다. ( | grep 과 같이 생각하면 된다.)
Tip
bc는 bash calculator 약자이다.
# 단 나눗셈을 할때는 정수로 출력이 되어버린다.
$ echo "4 / 3" | bc
1
# -1 옵션을 줘서 계산결과를 실수로 출력
$ echo "4 / 3" | bc -l
1.33333333333333333333
# scale 옵션을 줘서 출력 소숫점을 고정
$ echo "scale=3; 4 / 3" | bc
1.333
또한 bc 명령어는 논리 조건문 에도 쓰이는 편이다.
#!/usr/bin/bash
var=2
# echo 2 > 1.1 | bc 명령이 실행되어 참(1) 값을 반환
if [ `echo $var > 1.1 | bc` -eq 1 ]
then
echo "var > 1.1" # 1 -eq 1 은 참이니까 실행
else
echo "var <= 1.1"
fi
# echo 2 == 2 && 2 > 1 | bc 명령이 실행되어 참(1) 값을 반환
if [ `$var == 2 && $var > 1 | bc` -eq 1 ]
then
echo true
fi
728x90
'Linux > 쉘스크립트' 카테고리의 다른 글
(Bash Shell) while문과 until문 예제 (0) | 2023.02.28 |
---|---|
(AWK) 명령어 문법 (0) | 2023.02.09 |
쉘스크립트 예제 (2) | 2023.02.06 |
(shell script) 문자열 패턴 비교 (0) | 2023.02.05 |
쉘 배열문이란? (0) | 2023.02.03 |