[shell] Shell 스크립트에서의 예외 처리 패턴

쉘 스크립트를 작성할 때 예외 상황에 대비하는 것은 매우 중요합니다. 예외 처리를 통해 스크립트의 안정성을 높일 수 있고, 오류 발생 시 적절한 조치를 취할 수 있습니다.

set -e를 사용하여 오류 처리하기

보통 쉘 스크립트에서는 set -e를 사용하여 스크립트 실행 중 발생한 오류를 자동으로 처리하도록 할 수 있습니다.

#!/bin/bash
set -e
# 스크립트 내용

set -e를 사용하면 어떤 명령어가 실패하면 스크립트가 즉시 종료되도록 설정됩니다.

trap을 사용하여 오류 처리하기

때로는 특정 시그널(예를 들어, SIGINT 또는 SIGTERM)이 발생할 때 특정 작업을 수행해야 할 수 있습니다. 이때 trap을 사용하여 해당 시그널을 처리할 수 있습니다.

#!/bin/bash
trap "echo '이 스크립트는 강제 종료되었습니다.' && exit 1" SIGINT SIGTERM
# 스크립트 내용

위 예제에서는 SIGINT 또는 SIGTERM 시그널이 발생할 때 메시지를 출력하고 스크립트를 종료하도록 했습니다.

if-else 문을 사용하여 오류 처리하기

일부 명령어는 실패할 수 있는데, 이때 if-else 문을 사용하여 오류를 처리할 수 있습니다.

#!/bin/bash
if command; then
  # 성공했을 때 실행할 내용
else
  # 실패했을 때 실행할 내용
fi

위 예제에서는 command가 성공하면 첫 번째 블록이 실행되고, 실패하면 두 번째 블록이 실행됩니다.

결론

쉘 스크립트를 작성할 때 예외 처리는 매우 중요합니다. set -e를 사용하여 자동으로 오류를 처리하도록 하거나, trap을 사용하여 특정 시그널을 처리하도록 하고, if-else 문을 사용하여 명령어의 성공 여부에 따라 처리를 할 수 있습니다.

참고문헌: Bash Reference Manual