article thumbnail image
Published 2018. 2. 28. 15:18
반응형

script 실행 도중 에러 발생시 script를 멈추게 하는 방법

Shell Script를 실행하다보면 여러개의 명령중 하나의 명령이 실패했을 때 남아 있는 명령을 실행하면 안되는 경우가 있다.

 

이런 경우를 위해서 명령을 실행하고 실패시 곧바로 script의 실행을 막아주는 명령이 바로 set -e 이다.

 

#!/bin/sh
set -e
wget http://abc.com/target_file
chmod 755 target_file
ls -al target_file

 

위 스크립트는 wget으로 파일을 받아 와서 퍼미션을 부여하는 것인데 URL이 존재하지 않으면 파일이 생성되지 않으므로 chmod 명령을 수행 할 수 없게 된다.

 

계속해서 에러가 발생하는 것을 방지하기 위해 set -e 명령을 추가하게 되면 실패한 명령에서 곧바로 script의 실행이 멈추게 된다.

 

반대로 set +e는 에러가 발생해도 계속해서 명령을 실행하도록 해준다.

일부의 명령만 적용되게 하려면?

set -e와 +e를 적절히 섞어서 사용하면 된다.

 

#!/bin/sh
set -e
#이제 에러나면 멈춘다
wget http://abc.com/target_file
chmod 755 target_file
set +e
#에러나도 안멈춰 
cp target_file target_file_backup
set -e 
#다시 에러나면 멈춘다 
ls -al target_file

 

위와 같이 섞어서 사용하게 되면 cp 명령은 실패하더라도 다음 명령을 계속해서 진행하게 된다.

반응형
복사했습니다!