취미와 밥줄사이
[ Shell Script ] 종료와 종료 상태 본문
종료 상태(exit status)
- Return Value, Return status라고 부르기도 합니다.
- 이전에 수행했던 명령어나 프로그램이 종료될 때 넘겨주는 값을 의미합니다.
- 종료 상태 또는 반환 값이 중요한 이유는 쉘 스크립트를 작성하는데 있어서 특정 명령어의 성공 여부에 따라 분기해야 하는 경우 이전 명령어가 정상적으로 수행되었는지 확인하는 것이 중요하기 때문이다.
- 쉘 스크립트 내에서 exit 명령어가 실행되면 스크립트가 종료되면 부모 프로세스에 종료 상태를 전달할 수 있는데 이 값을 프로그램 내에서 임의로 지정할 수 있습니다.
- 모든 명령어는 종료 상태를 리턴한다.
- 명령어가 성공시에는 0을 리턴하고 실패시에는 에러 코드로 해석될 수 있는 non-zero(1~255)를 리턴한다.
- 유닉스 관례를 잘 따르는 프로그램, 스크립트 등 이라면, 함수의 가장 마지막에 실행된 명령어가 종료 상태를 결정한다.
- $? 변수는 제일 마지막 명령어의 종료 상태 코드 값을 가진다.
- shell script가 실행되는 프로세스에서 exit을 통해 상태 종료 표시만을 프로세스 실행 결과로 반환할 수 있습니다.
- 일반적으로 0은 성공을 나타내며 나머지 1~255는 에러를 나타냅니다.
종료(exit)
- exit 명령어는 매개변수로 주저인 값을 리턴합니다.
- 종료 상태로 사용할 수 있는 값의 범위는 0~255까지 입니다.
#! /bin/bash
echo "hello"
exit 100
- $?는 방금 실행된 프로세스가 반환한 결과값을 저장함
종료 상태 코드(exit status code)
- 종료 상태 코드들은 예약되어 있기 때문에 사용자가 임의로 exit 매개변수로 쓰면 안된다.
종료코드 | 뜻 | 에러 메시지 |
0 | 성공적으로 실행 | |
1 | 광범위한 일반적 에러 | Operation not permitted” , "not a valid identifier", "too many arguments" 등 |
2 | 쉘 builtin 명령어 오 사용 | "No such file or directory" 등 |
126 | Permission 문제로 실행 불가능한 명령어의 구동 | "Permission denied", "ls a directory" |
127 | 명령어의 경로($PATH) 문제 혹은 명령어 오타 | "Command not found", "No such file or directory" |
REFERENCE
https://gracefulprograming.tistory.com/70
https://twpower.github.io/134-how-to-return-shell-scipt-value
'Infrastructure > ShellScript' 카테고리의 다른 글
[ Shell Script ] read 명령어 사용법 (0) | 2022.03.04 |
---|---|
[ Shell Script ] 비교 표현식 (0) | 2022.03.04 |