1@kasperd,这不会像你期望的那样起作用。当sleep成为前台进程时,使用trap时,bash内部似乎将信号排队,直到命令完成(尽管它在信号到达时处理它们)。这会导致信号实际上只有在前台命令完成后才被处理。在您的情况下,您最终要等待一秒钟才能将信号“传递”到脚本中。这可能不会影响您,具体取决于您的用例,但需要注意。 - Matthew Ife
#!/bin/bash# traptest.shtrap"echo Booh!" SIGINT SIGTERM
echo"pid is $$"while : # This is the same as "while true".dosleep 60 # This script is not really doing anything.done
kill -l
获取可用信号的列表。它将显示每个信号的编号和名称。用户定义的信号称为USR1
和USR2
。 - kasperdsleep
成为前台进程时,使用trap时,bash内部似乎将信号排队,直到命令完成(尽管它在信号到达时处理它们)。这会导致信号实际上只有在前台命令完成后才被处理。在您的情况下,您最终要等待一秒钟才能将信号“传递”到脚本中。这可能不会影响您,具体取决于您的用例,但需要注意。 - Matthew Ife