Bash/셸 스크립트는 일반적으로 파일 안의 모든 코드가 실행될 때까지 순서대로 진행됩니다. 하지만 exit 명령어를 사용하면, 개발자가 지정한 조건에 따라 스크립트를 중간에 종료할 수 있습니다.
exit 명령어 문법
Bash/셸 스크립트에서 사용할 수 있는 exit 명령어의 기본 문법은 다음과 같습니다.
exit STATUS
각 요소의 의미는 다음과 같습니다.
- STATUS는 선택적 매개변수로, 스크립트의 종료 상태(exit status)를 지정합니다.
- 종료 상태는 다른 프로그램에 이 스크립트가 성공적으로 실행되었는지 여부를 알려주는 역할을 합니다.
- 값을 생략하면 0 또는 스크립트에서 마지막으로 실행된 명령어의 종료 상태가 기본값으로 사용됩니다.
- 종료 상태가 0이면 성공을 의미하고, 0보다 큰 값이면 실패를 나타냅니다.
Bash 스크립트 예제
다음은 exit 명령어를 활용한 예제 스크립트입니다. 주석을 통해 각 상황에서 어떻게 동작하는지 설명되어 있습니다.
#!/bin/bash
# 오류 발생 시 TRUE로 설정할 수 있는 테스트 변수
ERROR=false
# exit 명령어보다 앞에 있으므로 항상 출력됩니다
echo "Hello LinuxScrew!"
# 오류가 발생했다면...
if $ERROR ; then
# 사용자에게 오류를 알립니다
echo "There was an error"
# 상태 코드 1로 프로그램을 종료합니다 (스크립트가 실패했음을 의미)
exit 1
fi
# 상태 코드 0으로 스크립트를 종료합니다 (스크립트가 성공했음을 의미)
exit 0
# exit 명령어 뒤에 있으므로 이 줄은 절대 실행되지 않습니다
echo "This is a pointless line"
리눅스 셸 스크립트의 '#!'(쉐뱅)란?
스크립트 첫 줄의 #!/bin/bash는 '쉐뱅(shebang)'이라고 부르며, 이 스크립트를 어떤 인터프리터로 실행할지 시스템에 알려주는 역할을 합니다. 위 예제에서는 Bash로 실행하도록 지정한 것입니다.
위 예제에서 볼 수 있듯이, exit 명령어는 단순히 스크립트를 종료하는 간단한 명령입니다. 다만 종료 시 상태 코드를 함께 반환하기 때문에, 나중에 그 값을 확인하여 스크립트가 성공했는지 여부를 판단할 수 있습니다.
프로그램·스크립트의 종료 상태 확인하기
마지막으로 실행된 명령어의 종료 상태는 셸에서 다음 명령어로 확인할 수 있습니다.
echo $?
$? 특수 변수에는 직전에 실행된 명령어의 종료 상태가 저장되며, 이를 활용하면 스크립트나 자동화 작업에서 명령어의 성공·실패 여부에 따라 분기 처리를 할 수 있습니다.
스크립트의 출력은 어떻게 될까?
스크립트의 출력은 종료 상태와는 별개입니다. 프로그램의 결과물과 echo 같은 명령어의 출력은 모두 STDOUT(표준 출력)을 통해 출력되며, 이후 파이프나 리디렉션을 통해 다른 곳으로 보내거나, 화면에서 확인하거나, 파일로 저장할 수 있습니다.