Linux/쉘스크립트

(shell script)expr & bc

쿠카이든 2023. 2. 7. 10:15
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

출처 : https://inpa.tistory.com/entry/LINUX-%F0%9F%93%9A-expr-bc-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC-%EC%A0%95%EC%88%98-%EC%8B%A4%EC%88%98-%EC%97%B0%EC%82%B0?category=890814 

 

[LINUX] 📚 expr & bc 명령어 정리 (정수 / 실수 연산)

expr & bc 명령어 쉘에서는 숫자와 문자를 구분하지 않기 때문에 여타 프로그래밍 언어 처럼 숫자 연산이 간단하지 않다. 쉘에서 숫자를 연산하는 방법은 대표적으로 expr 와 bc 가 있다. expr은 bash

inpa.tistory.com

 

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