
셸 스크립팅의 종료 코드 이해
종료 코드(일반적으로 반환 코드 또는 종료 상태라고도 함)는 프로그램, 스크립트 또는 명령이 완료될 때 운영 체제에 전달하는 숫자 신호 역할을 합니다.이러한 코드는 긴 로그를 검색할 필요 없이 귀중한 정보를 제공하여 장애 및 문제를 신속하게 진단하는 데 도움이 됩니다.
셸 스크립팅 영역에서 프로토콜은 간단합니다.성공적인 실행은 종료 코드를 반환하고 0
, 0이 아닌 값은 일반적으로 오류를 나타내며, 표준 값은 ~ 1
와 ~ 사이에 있습니다 255
.
Bash나 Zsh와 같은 Unix 계열 환경에서 마지막으로 실행된 명령의 종료 코드를 확인하려면 특수 변수 $?
.를 활용하세요.방법은 다음과 같습니다.
ls /nonexistent_directoryecho $?

이 명령은 echo $?
마지막 명령의 종료 코드를 표시합니다.결과는 성공을 나타내고, , , 또는 0
와 같은 값은 파일 누락이나 권한 문제 등 다양한 오류를 나타냅니다.1
2
127
스크립트 디버깅을 위한 종료 코드 활용
종료 코드를 사용하면 스크립트 디버깅 능력이 크게 향상됩니다.스크립트가 작업의 성공 또는 실패 여부를 식별하고 그에 따라 후속 단계를 결정할 수 있습니다.
다음과 같은 실제 예를 고려해 보세요.스크립트는 파일을 백업 위치로 복사하고 성공 여부를 보고하도록 설계되었습니다.
#!/bin/bash # Attempt to copy the file cp important_file.txt backup/# Verify if the copy was successful if [ $? -eq 0 ]; then echo "Backup successful!" else echo "Backup failed with exit code $?" exit 1 # Send an error code, indicating failure fi
여기서 cp
명령이 종료 코드 를 반환하면 0
모든 것이 정상임을 나타냅니다.0이 아닌 값이 반환되면 스크립트는 오류 메시지를 출력하고 종료 코드 를 반환합니다 1
.
사용자 정의 종료 코드 생성
기존 종료 코드를 확인하는 것 외에도 다양한 오류를 나타내는 사용자 지정 코드를 정의할 수 있습니다.이를 통해 스크립트의 명확성이 향상되고 사용자가 발생할 수 있는 특정 문제를 파악하는 데 도움이 됩니다.
예를 들어 다음 스크립트를 살펴보겠습니다.
#!/bin/bash # Ensure an argument (filename) is provided. if [ -z "$1" ]; then echo "Usage: $0 <filename>" exit 1 # Exit code 1 indicates missing argument fi # Check for the existence of the file provided if [ ! -f "$1" ]; then echo "Error: File not found" exit 2 # Custom exit code 2 indicates file absence fi
이러한 구조를 통해 사용자는 오류를 빠르게 파악할 수 있습니다.종료 코드는 1
인수가 주어지지 않았음을 의미하고, 는 2
파일이 없음을 나타냅니다.이러한 명확성은 특히 스크립트가 대규모 시스템의 구성 요소일 때 유용합니다.
일반적인 종료 코드에 대한 가이드
종료 코드는 프로그램마다 다를 수 있지만, 특히 Linux 및 Unix 계열 시스템에서는 일반적인 패턴이 존재합니다.자주 발생하는 종료 코드를 요약하면 다음과 같습니다.
-
0
: 성공 – 작업이 문제 없이 완료되었습니다. -
1
: 구체적인 세부 정보가 없는 일반적인 오류가 발생했습니다. -
2
: 셸 내장 함수를 잘못 사용하는 경우가 많은데, 매개변수가 누락된 경우가 많습니다. -
126
: 명령을 찾았지만 실행 권한이 없습니다. -
127
: 명령을 찾을 수 없습니다.존재하지 않거나 철자가 틀렸습니다. -
128
: 종료 코드 의미론에 모순되는 잘못된 종료 인수입니다. -
130
: 프로그램이 Ctrl+ 에 의해 중단되었습니다 C. -
137
: 메모리 부족으로 인해 프로세스가 종료되었습니다. -
255
: 유효한 범위를 넘어서는 종료 코드를 반환하려는 시도가 발생했습니다.
특정 애플리케이션은 고유한 종료 코드를 할당할 수 있습니다.예를 들어, 명령은 일치 시, 일치 항목이 없을 때, 그리고 오류가 발생할 때 종료 코드 grep
를 반환합니다.개발자는 일반적으로 Unix 계열 환경에서 ~ 사이의 모든 값을 사용합니다.0
1
2
0
255
종료 코드를 사용하여 명령 체인하기
Bash 스크립팅은 두 가지 연산자와 를 제공하며, &&
이를 통해 이전 명령의 ||
성공(종료 코드 0
) 또는 실패(0이 아닌 종료)에 따라 명령을 연결할 수 있습니다.
-
&&
: 이전 명령이 성공한 경우에만 다음 명령을 실행합니다. -
||
: 이전 명령이 실패하면 다음 명령을 실행합니다.
예를 들어 디렉터리를 생성한 후 해당 디렉터리로 전환하는 시나리오가 있습니다.두 작업 중 어느 하나라도 실패하면 다음과 같은 오류 메시지가 나타나 문제를 알려줍니다.
mkdir new_directory && cd new_directory || echo "Failed to create and access directory"
이 경우, 명령은 mkdir new_directory
디렉토리를 설정하려고 시도합니다.성공하면 즉시 로 이동합니다 cd new_directory
.이 중 하나라도 실패하면 ||
운영자가 활성화되어 오류 메시지를 표시합니다.
마지막 생각
사소해 보일 수 있지만, 종료 코드는 명령줄 기능의 핵심적인 측면을 구성합니다.프로그램이 성공과 실패를 전달하는 표준화된 방법을 확립하며, 복잡한 시스템을 조율하는 데 필수적인 요소입니다.
명령줄 인터페이스의 세계에 발을 들여놓는다면, echo $?
명령이 예상한 결과를 내지 못할 때마다 확인하는 것을 잊지 마세요.곧 스크립팅 작업에서 종료 코드를 사용하는 기술을 익히게 될 것이며, 명령 간 통신을 향상시키는 데 있어 종료 코드가 얼마나 중요한 역할을 하는지 깨닫게 될 것입니다.
자주 묻는 질문
1.쉘 스크립팅에서 종료 코드는 무엇을 의미합니까?
종료 코드는 셸 스크립팅에서 명령이나 스크립트의 성공 또는 실패를 나타내는 숫자 신호 역할을 합니다.0이 아닌 값은 0
성공을 나타내고, 0이 아닌 값은 다양한 오류를 나타냅니다.
2. Bash에서 명령의 종료 코드를 어떻게 확인할 수 있나요?
마지막으로 실행된 명령의 종료 코드를 확인하려면 명령을 사용하세요 echo $?
.이렇게 하면 진단을 위한 숫자형 종료 코드가 표시됩니다.
3.스크립트에서 내 종료 코드를 직접 설정할 수 있나요?
물론입니다! 스크립트에 사용자 지정 종료 코드를 정의하여 특정 오류 상황을 전달할 수 있습니다.이렇게 하면 스크립트를 더욱 유익하고 사용자 친화적으로 만들 수 있습니다.
답글 남기기 ▼