[Shell Script] 쉘 스크립트에서 수치 계산 소개

 정보

  • 업무명     : 쉘 스크립트에서 수치 계산 소개

  • 작성자     : 박진만

  • 작성일     : 2020-03-11

  • 설   명      :

  • 수정이력 :

 

 내용

[특징]

  • 쉘 스크립트 (bash)에서 사용하는 수치 계산 소개

 

[활용 자료]

  • 없음

 

[자료 처리 방안 및 활용 분석 기법]

  • 없음

 

[사용법]

  • 작업 환경 구축

  • 소스 코드 작성 및 실행

  • 실행 결과 확인

 

[사용 OS]

  • Linux (CentOS v7.0)

  • VMware Workstation Pro v15.5

 

[사용 언어]

  • Shell Script (Bash)

 

 소스 코드

쉘 스크립트에서의 할당과 연산은 기본적으로 문자열 처리이다.

그러나 쉘 스크립트에서 수학 연산을 수행하는 몇 가지 특수한 방법이 있다. 

 

[나쁜 예시]

    • 경우 1, 2의 경우 변수 설정 시 문자열로 인식
    • 실행 결과 1+1로 문자열로 출력

# case 1
var=1+1

# case 2
var=1
var=$var+1

echo $var
  •  

 

[좋은 예시]

  • let 사용

    • 실행 결과 2로 올바르게 출력

    • 해당 기능에 대한 자세한 정보는 다음과 같습니다.

      • 지수 연산은 "**"를 사용함. 

      • 매개 변수는 표현식에서 직접 액세스하므로 $를 추가 할 필요가 없다. 

      • 일반적으로 산술 표현식에는 큰 따옴표가 없어도됩니다. 다만 표현식에 bash에 키워드가 있는 경우 e를 추가해야 한다. 

      • let 이후의 표현식은 정수 연산만 수행 할 수 있음.

var=1

let "var+=1"

echo $var

 

 

  • (())의 사용

    • 실행 결과 2로 올바르게 출력

    • (())는 let 과 용도가 같다.

var=1
((var+=1))
echo $var

 

 

  • $[] 의 사용

    • 실행 결과 2로 올바르게 출력

    • 해당 기능에 대한 세부 정보는 다음과 같다.

      • $[]는 결과를 계산하기 위해 수학 연산으로 대괄호 안의 표현식을 사용하여 출력한다.

      • $[]의 변수에 접근하기 전에 $를 추가해야 한다.

      • $[]는 let과 같은 연산자를 지원하기 때문에 정수 연산만 지원한다.

var=1
var=$[$var+1]
echo $var

 

 

  • expr 사용

    • 실행 결과 2로 올바르게 출력

    • 해당 기능에 대한 세부 정보는 다음과 같다.

      • expr 이후의 표현식은 공백으로 분리해야 한다.

      • expr이 지원하는 연산자는 다음과 같다. |, &, <, <=, = ,! =,> =,>, +,-, *, /, %

      • \로 이스케이프해야하는 expr이 지원하는 연산자는 다음과 같다. |, &, <, <=,> =,>, *

      • expr은 정수 연산만 지원한다.

var=1
var=`expr $var + 1`
echo $var

 

 

  • bc 사용

    • bc는 리눅스에서 정수형 부동 소수점 계산을 지원하는 간단한 계산기이다.

    • 정수형 계산

      • 실행 결과 2로 올바르게 출력 

      • 해당 기능에 대한 세부 정보는 다음과 같다.

        • bc는 리눅스에서 부동 소수점 숫자 계산을 지원하는 간단한 계산기이다.

        • 명령 줄에 bc를 입력하여 계산기 프로그램을 시작할 수 있다.

        • 프로그램에서 부동 소수점 숫자 계산을 직접 수행하려면 간단한 파이프 라인을 사용하여 문제를 해결할 수 있다.

    • 부동 소수점 계산

      • 실행 결과 9.42라는 두 자릿수 소수의 결과가 출력되었다.

      • 해당 기능에 대한 세부 정보는 다음과 같다.

        • bc는 비트 연산자를 제외한 모든 연산자를 지원한다.

        • bc에서 스케일을 사용하여 정확도를 설정할 수 있다.

  •  
# case 1
var=1
var=`echo "$var+1"|bc`

echo $var

# case 2
var=3.14
var=`echo "scale=2;$var*3"|bc`
echo $var

 

 

 참고 문헌

[논문]

  • 없음

[보고서]

  • 없음

[URL]

  • 없음

 

 문의사항

[기상학/프로그래밍 언어]

  • sangho.lee.1990@gmail.com

[해양학/천문학/빅데이터]

  • saimang0804@gmail.com

 

 

 

 

 

 

 

본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음