배운것/LINUX

Linux shell - 사칙연산 해보기 $(expr ) , $[] , $(()) 변수 활용

SangPedia 2021. 9. 9. 17:07

사칙연산 해보기

1. $(expr )

expr은 패턴 일치 정규 표현식을 포함하여 정수 문자열 식을 평가한다.

사용 가능한 연산자는 다음과 같다.

  • 정수의 경우: 더하기, 빼기, 곱하기, 나누기, 계수(modulus)
  • 문자열의 경우: 정규 표현식 찾기, 문자열 내의 문자들의 집합을 찾기. 일부 버전에서는: 부스트링 찾기, 문자열의 길이
  • 둘 중 하나에 대해: 비교 (동등, 동등하지 않음, 보다 작음 등)
  • 순수 산술에서 bc를 사용하는 것이 더 편리한 경우도 있다.
    이를테면 다음과 같다:echo "3*4+14/2" | bc
#! /bin/bash
# your code goes here
	num1=10 num2=5

	echo "num1 = $num1"
	echo "num2 = $num2"

	add=$(expr $num1 + $num2)
	echo "add = $add"

	echo "sub = $(expr $num1 - expr $num2)"
	echo "mul = $(expr $num1 \* expr $num2)"
	echo "div = $(expr $num1 / expr $num2)"
	echo "modulo = $(expr $num1 % expr $num2)"


➤ sh expr.sh

num1 = 10
num2 = 5
add = 15
sub = 5
mul = 50
div = 2
modulo = 0

 

 

2. $(), ${}

$() 이런 식으로 붙이는 경우도 있습니다. 이것은 명령어의 실행 결과를 의미합니다. 즉, $(Command) 쓰면, $(Command)는 명령어 Command의 실행 결과로 대치됩니다.

#! /bin/bash
# your code goes here

num1=20 num2=5

echo 
echo "add = $($num1 + $num2)"
echo "sub = $($num1 - $num2)"
echo "mul = $($num1 * $num2)"
echo "div = $($num1 / $num2)"
echo "module = $($num1 % $num2)"

➤ sh no_expr.sh

no_expr.sh: line 6: 20: command not found
add =
no_expr.sh: line 7: 20: command not found
sub =
no_expr.sh: line 8: 20: command not found
mul =
no_expr.sh: line 9: 20: command not found
div =
no_expr.sh: line 10: 20: command not found
module =

 

#! /bin/bash
# your code goes here

num1=20 num2=5

echo 
echo "add = $[$num1 + $num2]"
echo "sub = $[$num1 - $num2]"
echo "mul = $[$num1 * $num2]"
echo "div = $[$num1 / $num2]"
echo "module =  $[$num1 % $num2]"

➤ sh no_expr2.sh

add = 25
sub = 15
mul = 100
div = 4
module =  0

 

4. $(()) 활용

#! /bin/bash
# your code goes here

num1=20 num2=5

echo 
echo "add = $(($num1 + $num2))"
echo "sub = $(($num1 - $num2))"
echo "mul = $(($num1 * $num2))"
echo "div = $(($num1 / $num2))"
echo "module = $(($num1 % $num2))"

➤ sh no_expr3.sh

add = 25
sub = 15
mul = 100
div = 4
module =  0

 

 

반응형