[shell] Shell 스크립트 예외 상황 시의 대처 방법

Shell 스크립트를 작성할 때, 예외 상황에 대처하는 것은 매우 중요합니다. 예외 처리를 통해 스크립트가 예상치 못한 입력이나 오류에 대응할 수 있게 만들 수 있습니다. 이 글에서는 Shell 스크립트에서 발생하는 예외 상황을 다루는 방법에 대해 알아보겠습니다.

1. 오류 발생 시 프로그램 종료

스크립트에서 중요한 명령어가 실패하면, 스크립트는 더 이상 실행되지 않고 종료되어야 합니다. 이 때 set -e 명령어를 사용하면 실패한 명령어가 있을 경우 스크립트가 즉시 종료됩니다.

예시:

#!/bin/bash
set -e
command1
command2

위의 스크립트에서 command1이 실패하면 command2는 실행되지 않고 스크립트가 종료됩니다.

2. 에러 메시지 출력

실패한 이유를 파악하기 쉽도록 스크립트에서 에러 메시지를 출력하는 것이 좋습니다. 이를 위해 echo를 사용하거나 exit를 호출하여 에러코드와 함께 메시지를 출력할 수 있습니다.

예시:

#!/bin/bash
if [ ! -f "file.txt" ]; then
  echo "file.txt를 찾을 수 없습니다." >&2
  exit 1
fi

3. 예외 처리

스크립트에서 발생할 수 있는 예외 상황을 미리 예측하여 해당 상황에 맞는 처리를 추가하는 것이 좋습니다. 이를 통해 스크립트의 안정성을 높일 수 있습니다.

예시:

#!/bin/bash
filename=$1
if [ -z $filename ]; then
  echo "사용법: $0 파일이름" >&2
  exit 1
fi

위의 스크립트는 파일명이 주어지지 않았을 경우 에러 메시지를 출력한 후 종료합니다.

4. 에러 핸들링

일부 오류는 사용자가 직접 처리하도록 하는 것이 좋을 수 있습니다. 이를 위해 trap 명령어를 사용하여 특정 시그널이나 오류가 발생했을 때 실행할 동작을 정의할 수 있습니다.

예시:

#!/bin/bash
cleanup() {
  # 에러 처리 로직
}
trap cleanup ERR

위의 스크립트에서 ERR 시그널이 발생하면 cleanup 함수가 호출되어 에러 처리를 수행합니다.

예외 상황에 대응하는 방법은 스크립트의 안정성과 신뢰성을 높이는 데 기여합니다. 적절한 예외 처리를 통해 스크립트를 안정적으로 만들어 보시기 바랍니다.

참고 자료