trap 语句的语法很简单:
trap [COMMANDS] [SIGNALS]
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
trap "ls" debug
Desktop Templates Documents
1 到 64 中的哪个数字是调试信号号?
答案1
Bash 的手册这里似乎有点令人困惑,因为它似乎暗示所有命令采用的是信号名称或数字:
trap [-lp] [arg] [sigspec …]
该
-l
选项使 shell 打印信号名称及其相应编号的列表。每个信号规范是信号名称或信号编号。
当然DEBUG
,EXIT
、ERR
、 和RETURN
不是实际的信号,而是 shell 中的条件。在线帮助文本略有不同,但并没有好多少,尽管它提到了“信号或其他条件”。
这POSIX 中的文本更清楚了,它明确指出条件是任何一个一个信号,或者 EXIT
:
trap [action condition...]
条件可以是 EXIT、0(相当于 EXIT)或使用符号名称指定的信号,不带 SIG 前缀,如<信号.h>标头
因此,EXIT
数字为零,其他都是非标准扩展,并且似乎没有等效的数字。
答案2
没有调试信号,这是您可以阅读更多内容的其他内容这里。
If a sigspec is DEBUG, the command arg is executed before every simple command, for command, case command, select command, every arithmetic for command, and before the first command executes in a shell function