"Bash 숫자 계산"의 두 판 사이의 차이

(같은 사용자의 중간 판 12개는 보이지 않습니다)
5번째 줄: 5번째 줄:
:→ 단, 나누기 소수점 계산은 안됨
:→ 단, 나누기 소수점 계산은 안됨
:→ 모두 정수형으로 취급됨
:→ 모두 정수형으로 취급됨
* [[리눅스 bc]]를 활용하면 소수점 계산도 가능
* [[리눅스 awk|awk]], [[리눅스 bc|bc]]를 활용하면 소수점 계산도 가능


==방법 1: bash 내장 문법==
==방법 1: bash 변수 처리==
<source lang='bash'>
<source lang='bash'>
x=3
x=3
y=4
y=4
z=$((x + y))
z=$((x+y))
echo $z
echo $z
# 7
# 7
</source>
</source>
<source lang='bash'>
<source lang='bash'>
echo $((x - y))
echo $((x-y))
echo $((x * y))
echo $((x*y))
echo $((x / y))
echo $((x/y))
# -1
# -1
# 12
# 12
# 0
# 0
echo $((12 / 5))
echo $((12/5))
# 2
# 2
</source>
</source>
56번째 줄: 56번째 줄:


==방법 3: expr 명령어==
==방법 3: expr 명령어==
* 숫자와 연산자 사이를 띄어써야 함
<source lang='bash'>
<source lang='bash'>
x=3
x=3
y=4
y=4
z=`expr $x + $y`
expr $x + $y
echo $z
# 7
# 7
</source>
</source>
<source lang='bash'>
<source lang='bash'>
echo `expr $x - $y`
expr $x - $y
echo `expr $x \* $y`
expr $x \* $y
echo `expr $x / $y`
expr $x / $y
# -1
# -1
# 12
# 12
# 0
# 0
echo `expr 12 / 5`
expr 12 / 5
# 2
# 2
</source>
</source>


==방법 4: bc 명령어==
==방법 4: awk 명령어 ★==
* [[리눅스 bc]]가 설치되어 있어야 함
{{참고|awk 간단한 계산}}
* 장점1: 리눅스 기본 명령어
* 장점2: 소수점 계산 가능
* 단점: 변수를 직접 쓰지 못하고 파이프로 변수를 전달하는 과정이 필요하다.
<source lang='bash'>
x=3
y=4
echo $x $y | awk '{print $1+$2}'
# 7
echo $x $y | awk '{print $1-$2}'
# -1
echo $x $y | awk '{print $1*$2}'
# 12
echo $x $y | awk '{print $1/$2}'
# 0.75
</source>
 
==방법 5: bc 명령어==
* [[리눅스 bc]]가 설치되어 있어야 함
<source lang='bash'>
<source lang='bash'>
x=3
x=3
y=4
y=4
echo "$x + $y" | bc
echo "$x+$y" | bc
# 7
# 7
</source>
</source>
<source lang='bash'>
<source lang='bash'>
echo "$x - $y" | bc
echo "$x-$y" | bc
echo "$x * $y" | bc
echo "$x*$y" | bc
echo "$x / $y" | bc
echo "$x/$y" | bc
# -1
# -1
# 12
# 12
# 0
# 0
echo "12 / 5" | bc
echo "12/5" | bc
# 2
# 2
echo "12 / 5" | bc -l
echo "12/5" | bc -l
# 2.40000000000000000000
# 2.40000000000000000000
</source>
</source>
100번째 줄: 118번째 줄:
*[[리눅스 let]]
*[[리눅스 let]]
*[[리눅스 expr]]
*[[리눅스 expr]]
*[[리눅스 awk 간단한 계산]]
*[[연산자 +]]
*[[연산자 +]]
*[[Bash 숫자 비교]]
*[[Bash 숫자 비교]]


[[분류: Bash]]
[[분류: Bash]]

2019년 12월 12일 (목) 15:41 판

1 개요

리눅스 숫자 계산
리눅스 숫자 연산
→ 단, 나누기 소수점 계산은 안됨
→ 모두 정수형으로 취급됨
  • awk, bc를 활용하면 소수점 계산도 가능

2 방법 1: bash 변수 처리

x=3
y=4
z=$((x+y))
echo $z
# 7
echo $((x-y))
echo $((x*y))
echo $((x/y))
# -1
# 12
# 0
echo $((12/5))
# 2

3 방법 2: let 명령어

x=3
y=4
let z=$x+$y
echo $z
# 7
let z=$x-$y
echo $z
# -1
let z=$x*$y
echo $z
# 12
let z=$x/$y
echo $z
# 0
let z=12/5
echo $z
# 2

4 방법 3: expr 명령어

  • 숫자와 연산자 사이를 띄어써야 함
x=3
y=4
expr $x + $y
# 7
expr $x - $y
expr $x \* $y
expr $x / $y
# -1
# 12
# 0
expr 12 / 5
# 2

5 방법 4: awk 명령어 ★

  • 장점1: 리눅스 기본 명령어
  • 장점2: 소수점 계산 가능
  • 단점: 변수를 직접 쓰지 못하고 파이프로 변수를 전달하는 과정이 필요하다.
x=3
y=4
echo $x $y | awk '{print $1+$2}'
# 7
echo $x $y | awk '{print $1-$2}'
# -1
echo $x $y | awk '{print $1*$2}'
# 12
echo $x $y | awk '{print $1/$2}'
# 0.75

6 방법 5: bc 명령어

x=3
y=4
echo "$x+$y" | bc
# 7
echo "$x-$y" | bc
echo "$x*$y" | bc
echo "$x/$y" | bc
# -1
# 12
# 0
echo "12/5" | bc
# 2
echo "12/5" | bc -l
# 2.40000000000000000000

7 같이 보기

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}