본문 바로가기
Linux/Shell script

[shell script] exception handling (예외 처리)

by 개폰지밥 2021. 10. 28.
반응형

| shell script 예외처리

많은 프로그램에서 예외처리는 예상치 못하게 명령이 실패했을 때 많이 사용된다.

자바에서는 try ~ catch문이 많이 사용된다.

하지만 쉘 스크립트는 별도 예외 처리 구문이 없다고 한다. 이에 따라 성공 여부를 판단해 조건문을 많이 사용한다고 한다.

리눅스에서 명령어의 정상 동작 여부는 echo $?를 확인한다.

정상동작 했을 경우에는 0이 나오고 나머지 경우에는 0을 제외한 숫자가 나오게 된다.

 

예를 들어 wget 명령어를 이용하여 mysql를 설치하려고 했는데

설치 도중에 certificate가 유효하지 않는 이슈 때문에 설치되다가 실패했다.

그 후 echo $?를 이용하여 명령어의 결과 값을 보면

실패 했기 때문에 0이 아닌 숫자 5가 나왔다.

 

반대로 wget 명령어를 이용하여 mysql 설치를 성공했을때의 결과값을 살펴보자.

0이 나오게 된다.

 

이 이론을 가지고 쉘 스크립트에 적용 할 수 있다.

 

| 쉘 스크립트에 적용해보기

mysql을 설치하는 wget 명령어가 성공했을 시에는 관련 패키지를 다운받는 sudo rpm -ivh mysql~이 실행되고, 실패시에는 mysql installfailure했다는 문구가 뜨는 쉘 스크립트 입니다.

#mysql install
        wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm --no-check-certificate
        #sucess check if 3
        if [ $? -eq 0 ];then
 
        #mysql package install
        sudo rpm -ivh mysql57-community-release-el7-11.noarch.rpm
           else
        echo "mysql install failure! check you can to use wget etc..."
        exit 9
        fi
반응형

댓글