Bash 쉘에서 오류 처리를 위해 다양한 방법을 사용할 수 있습니다. 주요한 방법으로는 오류 코드, 조건문을 사용한 처리, 예외 처리 문법 등이 있습니다.
-
오류 코드:
$?
: 최근 실행한 명령어의 종료 상태를 나타내는 변수exit
: 스크립트를 종료하고 지정된 오류 코드로 상태를 반환
-
조건문을 사용한 처리:
if-else
문을 사용하여 조건에 따라 오류 처리 로직 작성
-
예외 처리 문법:
trap
을 사용하여 오류 발생 시 실행할 동작 설정set -e
: 오류가 발생하면 즉시 스크립트를 종료set -o pipefail
: 파이프 라인에서 어떤 명령어라도 오류가 발생하면 스크립트를 종료
[기본 샘플 코드]
오류 코드를 사용한 처리:
command
if [ $? -ne 0 ]; then
echo "Command failed with exit code $?"
fi
조건문을 사용한 처리:
if command; then
echo "Command executed successfully."
else
echo "Command failed."
fi
예외 처리 문법:
trap 'echo "Error occurred."; exit 1' ERR
# 오류 발생 시 스크립트 종료
set -e
# 파이프 라인에서 오류 발생 시 스크립트 종료
set -o pipefail
[응용 코드]
다른 함수와 함께 사용하는 예시:
# 함수 내에서 오류 처리
process_file() {
if [ ! -f "$1" ]; then
echo "File not found: $1"
return 1
fi
# 파일 처리 로직
}
process_file "file.txt"
# 오류 처리 시 스크립트 종료
handle_error() {
echo "An error occurred."
exit 1
}
command1 || handle_error
command2 || handle_error
[조건문과 반복문과 함께 사용하는 샘플 코드]
# 조건문을 사용하여 오류 처리
if command1; then
# 성공 시 처리
else
# 오류 처리
fi
# 반복문과 함께 오류 처리
for file in *.txt; do
process_file "$file" || break
done
[성능 향상을 위한 팁]
- 불필요한 오류 처리를 피하고, 필요한 부분에만 오류 처리를 적용하세요.
- 오류 처리를 할 때는 로그를 적절히 기록하여 추후 디버깅에 도움이 되도록 하세요.
[성능 향상을 위한
팁에 해당하는 샘플 코드]
# 오류 처리 로그 기록
handle_error() {
local error_message="An error occurred."
echo "$error_message" >> error.log
exit 1
}
# 오류 처리 필요한 부분에만 적용
if command1; then
process1 || handle_error
else
handle_error
fi