Bash에 내장된 구문 trap
은 다음과 같습니다.
trap [-lp] [arg] [sigspec ...]
...각각은
sigspec
신호 이름 또는 신호 번호입니다. 신호 이름은 대소문자를 구분하지 않으며 SIG 접두사는 선택 사항입니다....
Bash 매뉴얼에는 , , 및 가 sigspec
될 수 있다고 명시되어 있습니다 . 신호의 이름인가요?EXIT
DEBUG
RETURN
ERR
아래에 제공된 모든 신호 이름 목록에서 해당 신호 이름이 SIG
앞에 붙은 경우에도 찾을 수 없는 이유는 무엇입니까?
Linux 운영 체제가 아닌 bash 쉘에만 관련이 있습니까? Linux 운영 체제 신호가 아닌 bash 쉘 신호입니까?
$ trap -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
감사해요.
답변1
이 이름은 bash에서 특별한 의미를 가지며 사용법은 다음과 같습니다.수동:
sigspec이 0 또는 EXIT이면 쉘이 종료될 때 arg가 실행됩니다. sigspec이 DEBUG인 경우 arg 명령은 모든 단순 명령 이전, 명령의 경우, case 명령, select 명령, 명령의 모든 산술, 쉘 함수의 첫 번째 명령 이전에 실행됩니다.
sigspec이 ERR인 경우 파이프라인(단일 단순 명령으로 구성될 수 있음), 목록 또는 복합 명령이 0이 아닌 종료 상태를 반환할 때마다 다음 조건에 따라 arg 명령이 실행됩니다.
답변2
이는 신호는 아니지만 이 메커니즘을 사용하는 것이 타당한 다른 상황이 있습니다 trap
. 이 이름은 bash에서만 의미가 있습니다.