
Bash에서 포괄적인 최신 오류 코드 목록을 찾는 데 어려움을 겪고 있습니다. 예:
$ udevadm info /dev/sdx; echo Exit code $?
Unknown device, --name=, --path=, or absolute path in /dev/ or /sys expected.
Exit code 4
그러한 종료 코드를 어떻게 조회해야 합니까?
답변1
다음과 같은 몇 가지 종료 코드가 있습니다.예약된 특별한 의미:
종료 코드 번호 의미 1 일반적인 오류에 대한 캐치홀 2 쉘 내장 기능의 오용(Bash 문서에 따름) 126 호출된 명령을 실행할 수 없습니다. 127 "명령을 찾을 수 없습니다" 128+n 치명적인 오류 신호 "n" 130 Ctrl-C에 의해 스크립트가 종료되었습니다. 255* 종료 상태가 범위를 벗어났습니다.
125 미만의 모든 것은 개발자에게 공정한 게임이며 실제로는 다음과 같이 예측할 수 있습니다.그의 답변에 l0b0 메모가 있습니다., 애플리케이션 페이지나 소스 코드를 읽어 man
코드가 무엇을 의미하는지 확인합니다(실제로 코드가 문서화되어 있는 경우).
답변2
tl;dr종료 코드는 응용 프로그램마다 다릅니다.
몇 가지 느슨한 규칙이 있습니다. POSIX 셸에서 (예: ) 접두사 false
가 붙은 모든 항목은 종료 코드 1을 반환하지만 개발자는 원하는 대로 0에서 255 사이의 종료 코드를 사용할 수 있습니다. 궁극적으로 그것이 무엇을 의미하는지 알기 위해서는 문서(최상의 경우)나 코드(최악의 경우)를 살펴봐야 합니다. 페이지 종료 코드가 있는 프로그램의 경우 종종 이름이 지정된 섹션에 나열됩니다 ( 와 같은 GNU 도구 ).!
! true
man
EXIT STATUS
find
몇 가지 대중적인 의미가 다음에 나열되어 있습니다 /usr/include/sysexits.h
. 나는 가능할 때마다 그 의미를 사용하려고 노력합니다. 처럼@AnsgarEsztermann이 지적했습니다., 이는 Bash 참조가 아니며 이를 사용하기로 선택한 사용자(주로 C/C++ 개발자)를 제외하고는 애플리케이션 참조도 아닙니다.ABS에 따르면).