「명령이 성공했나?」를 어떻게 알까.
셸의 모든 명령은 「종료 코드(exit code)」 — 0~255 정수 — 를 반환합니다.
0은 성공, 그 외는 실패.
확인.
명령 후 echo $?
— 직전 명령의 종료 코드.
ls /존재 안 함 후 echo $?하면 2(파일 없음).
0이 아니면 뭔가 잘못된 신호.
스크립트의 종료 코드.
exit N — 그 코드로 종료.
exit 0 — 성공.
exit 1 — 일반 실패.
exit 2 — 인자 오용.
POSIX 권장 — 프로토콜처럼 따라야 cron·systemd 등이 정상 동작.
조건문에서.
if command; then ...
형식이 곧 종료 코드 검사.
command && success_action || failure_action 같은 짧은 조건도.
셸 분기의 기반.
set -e — 실패 시 종료.
스크립트 첫 줄 set -e.
어느 명령이라도 실패(0이 아닌 종료) 시 즉시 스크립트 종료.
「실패 무시하고 계속 진행」으로 인한 사고 방지.
단, 검사 의도된 실패(예: grep으로 없으면 실패)도 같이 잡혀 주의.
한 줄 요약
종료 코드 0=성공, 그 외=실패.
$?로 직전 코드 확인, exit N으로 명시.
if·&&·||의 기반.
set -e로 실패 시 즉시 종료(주의: 의도된 실패도 잡힘).
더 알아볼 것
- set -u — 미정의 변수 시 종료
- set -o pipefail — 파이프 중간 실패도 잡기
- trap ERR — 에러 핸들러