반응형
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 명령은 실패하더라도 다음 명령을 계속해서 진행하게 된다.
반응형
'Linux' 카테고리의 다른 글
[Ubuntu] 퀄컴 Athreos 드라이버 설치 (qca61x4) (0) | 2018.09.11 |
---|---|
major version 52 is newer than 51, the highest major version supported by this compiler (0) | 2018.05.11 |
특정 포트를 사용하고 있는 프로세스 확인 (0) | 2018.02.26 |
Ubuntu 16.04에 openjdk 7 설치하기 (0) | 2018.02.03 |