[Shell Script] 값이 정수인지 확인하여 계산

값이 정수인지 확인하여 계산 

 

expr 명령어 등으로 계산하기 전에 변숫값이 정수인지 확인하고 싶을 때 사용하는 스크립트입니다 . 

#!/bin/sh
 test "$1" -eq 0 2>/dev/null   #1

 if [ $? -lt 2 ]; then          #2
    echo "Argument is Integer."
    expr 10 + $1
else
    echo "Argument is not Integer."
    exit 1
fi


해설 

#1에서 인수 확인을 합니다 . test 명령어를 사용하여 명령행 인수가 0과 같은지 -eq 연산자로 확인합니다 . 
test 명령어 출력 결과 자체는 필요 없으므로 표준에러 출력은 /dev/null로 리다이렉트 후 버립니다 . 
#1의 종료 스테이터스($?) 은 다음과 같습니다 

  • 명령행 인수가 0과 같으면 0 
  • 명령행 인수가 0이 아니면 1 
  • 명령행 인수가 0과 비교 불가능한 문자열이면 2 

따라서 #2에서 종료 스테이터스를 비교하여 2보다 작으면 정수로 보고 그대로 계산하고 아니라면 에러 메세지를 출력 후 종료합니다 . 



댓글