본문 바로가기
Programming

exit and exit status in bash script

by leanu 2010. 6. 3.
bash script 에서 방금 전 수행한 명령의 exit status 를 읽어오는 변수( $? )가 있는데, 이를 이용하면 스크립트 수행중 에러 발견시 그 부분에서 stop 을 할 수 있다.

아래의 예를 보자
#!/bin/bash
echo "Test"
echo "Exit Status : " $?       # Exit Status is 0

;a3ker2l3krjekrjwlk;             #Unrecognized command.
echo "Exit Status : " $?       # Exit Status is Non-zero
0 이 아닌 값이 나오면 에러인데, 이는 사용하고자 하는 커맨드가 다르다. 만약 작성한 2개의 스크립트가 있고 한개의 스크립트(A라 하자)가 다른 한개(B라 하자) 내부에서 호출되는 경우, B 에 A의 exit status 를 알려주기 위해서 A 내부에는 반드시 exit 를 사용해야 한다. 아래의 예제를 보면 간단하게 이해할 수 있다.
<A.sh File>

#!/bin/bash
make
if [ $? -ne 0 ]; then
    exit $?
mkdir test
exit $?

<B.sh File>

#!/bin/bash
./A.sh
if [ $? -ne 0 ]; then
    exit $?
mkdir test2
exit $?


Personal Tag : How to stop in bash script when internal command occurs failure

댓글