기본적으로 Shell script에서 정수 및 실수 연산을 처리하는 방법은 아래와 같다.
1) 정수 연산: 대괄호 사용, expr, bc, awk
2) 실수 연산: expr, bc, awk
1. expr
▪ syntax: expr <expression>
▪ 예시
$ result=$( expr 1+2 )
$ echo $result
3
2. 대괄호 사용
▪ Bash에서는 변수에 계산 결과를 할당할 때, 달러 기호와 대괄호 기호를 사용하여 수식을 묶을 수 있다.
▪ 장점: expr보다 더 쉽게 수식을 사용할 수 있음
▪ 단점: 정수 연산만 가능
▪ ex) 1 + 5를 계산한 결과를 val1에 할당 후, val1에 2를 곱한 값을 val2에 할당
$ var1=$[1 + 5]
$ echo $var1
6
$ var2=$[$var1*2]
$ echo $var2
12
3. 부동 소수점 계산
▪ z shell 사용
▪ bc 사용 (Bash의 내장용 계산기)
▪ awk 사용
1) bc 사용
▪ bc 계산기가 인식하는 것
∙ 숫자 (정수 및 부동 소수점), 변수 (단순 변수 및 배열), 주석, 수식, 프로그래밍문 (for, if-then, ...), 함수, ...
▪ 부동 소수점 계산
∙ scale이란 내장 함수가 제어
∙ scale: 원하는 소수점 이하의 자리를 설정 ( 기본값: 0 )
▪ 스크립트에서 bc 사용 1 : 파이프라인 사용
∙ 기본적인 형태: variable=$( echo "option; expression" | bc )
∙ option: 변수의 옵션 설정하며, 두 개 이상의 변수를 할당 시 세미콜론으로 구분
∙ expression: bc로 계산할 수식을 정의함
▪ 스크립트에서 bc 사용 2 : 인라인 입력 리다이렉트 사용
∙ 커멘드 라인에서 직접 데이터를 리다이렉트하는 것
∙ 기본적인 형태
a. 스크립트에서 bc 사용: 파이프 라인을 통한 활용 예시 1)
#! /bin/bash
var1=$( echo “scale=4; 3.44/5” |bc )
echo “the answer is $var1”
var2=100
var3=45
var4=$( echo “scale=4; $var2/$var3” |bc )
b. 스크립트에서 bc 사용: 인라인 입력 리다이렉트 사용 시 기본적인 형태
Variable=$(bc << EOF
options
statements
expressions
EOF
)
c. 스크립트에서 bc 사용: 인라인 입력 리다이렉트의 활용 예시
#! /bin/bash
var1=10.46
var2=43.67
var3=33.2
var4=71
var5=$(bc << EOF
scale=4
a1= ($var1 * $var2)
b1= ($var3 * $var4)
a1 + b1
EOF
)
2) awk 사용
▪ 기본적인 형태: variable=$( echo "$val1; $val2;...;$valn" | awk '{printf( expression, values}' )
▪ 출력되는 형태는 c언어에서의 formatting과 동일하다.
▪ 예시
cmt323@master:~$ val=$( echo "1; 2" |awk '{printf "%f", $1 + $2 }' )
cmt323@master:~$ echo $val
3.000000
'프로그래밍 언어 > Shell script(BASH)' 카테고리의 다른 글
[Shell script] 여러 개의 사용자 계정 만들기 (0) | 2021.06.03 |
---|---|
[Shell scripts] 기본적인 스크립트 제어 (if, for, where, case) (0) | 2021.05.17 |
[Shellscript] 쉘, 쉘 스크립트 및 쉘 변수 (BASH) (0) | 2021.04.20 |
[Bash/Shell script] 디렉토리 리스트 출력 (0) | 2021.02.05 |
[Bash/Shell script] Sort 함수 정리 (0) | 2021.02.05 |
댓글