[shell script] 수식 계산 방법

HYEOB KIM·2022년 4월 12일
0

Shell

목록 보기
6/71

bash 수학 연산(expr, $[])은 정수 연산만 지원합니다.
부동소수점 연산은 bc 명령어를 이용할 수 있습니다.

expr 명령

리눅스 커맨드 라인에서 수식을 계산할 때 사용하는 명령어는 expr입니다.

$ expr 1 + 5
6

표준 연산자(+, /, -)의 경우는 계산이 에러 없이 잘 처리되지만,
곱셈(*)의 경우에는 에러가 발생합니다.

$ expr 2 * 5
expr: syntax error: unexpected argument ‘~’

문자열에서 특수 문자를 출력하기 위해 처리했던 방법과 같이 \를 붙이면 해결됩니다.

$ expr 2 \* 5
10

스크립트 내에서는 $(expr 수식)의 형식으로 계산을 수행할 수 있습니다.

$ cat test1
#!/bin/bash
var1=10
var2=20
result=$(expr $var1 + $var2)
echo "result : $result"

$ ./test1
result : 30

대괄호([]) 이용하기

expr 대신 훨씬 쉽게 이용하는 방법이 있습니다.

$[계산할 수식]의 방식으로 쉽게 수식을 계산할 수 있습니다.

$ cat test1
#!/bin/bash
var1=10
var2=20
result=$[$var1 + $var2]
echo "result : $result"

$ ./test1
result : 30

bc 명령

expr$[] 방식은 정수 연산만 지원합니다. bash에서 부동소수점 연산을 하고 싶다면, bc 명령어를 이용합니다.

커맨드라인에서 bc를 명령하면 한 줄 씩 데이터를 입력받는데, 형식이 있습니다.

$ bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
scale=4
3.14 / 5
.6280
scale=2
3.14 / 5
.62
quit
  • bc 1.07.1 : 버전 설명
  • Copyright ~ 'warranty'. : 저작권 설명
  • scale= : 소수점 몇 째 자리까지 나타낼 것인가
  • 계산할 수식 입력
  • 결과값 출력
  • quit을 입력할 때까지 위의 입력을 계속 반복 가능.

bc 명령은 위와 같은 데이터 입력 형식이 존재해서 아래와 같은 방식(echo 이용)으로 스크립트에서 이용할 수 있습니다.

$ cat test1
#!/bin/bash
result=$(echo "scale=4; 3.14 / 5" | bc)
echo "result : $result"

$ ./test1
result : .6280

echo 명령으로 bc 명령어의 입력 형식에 맞춰 한 줄에 입력해주고 파이프를 통해 bc명령으로 보내줍니다.

변수 역시 사용할 수 있습니다.

$ cat test1
#!/bin/bash
var1=3.14
var2=5
result=$(echo "scale=4; $var1 / $var2" | bc)
echo "result : $result"

$ ./test1
result : .6280
profile
Devops Engineer

0개의 댓글