[[email protected] prog]# cat trap2.sh #!/bin/bash function cleanup() { echo "Received signals and cleanup files" } #trap 到SIG信号,自动停止 trap ‘cleanup;exit 1‘ SIGHUP trap ‘cleanup;exit 1‘ SIGINT trap ‘cleanup;exit 1‘ SIGTRAP #SIGKILL can not be traped while : do echo "Hi there" sleep 1 done [[email protected] prog]#
[[email protected] prog]# cat trap4.sh #!/bin/bash trap ‘cleanup‘ SIGINT function cleanup() { echo "call function" trap - SIGINT #遇到一次SIGINT, 就会清除掉trap捕捉SIGINT } while : do echo "hello aaa" sleep 2 done
[[email protected] prog]# cat trap5.sh #!/bin/bash cleanup_new() { echo "Some new and extra cleanup performed" trap - SIGINT #第三次TRAP 加exit。消除SIGINT } cleanup_old() { echo "Some cleanup performed" trap cleanup_new SIGINT #第二次继续trap INT } trap ‘cleanup_old SIGINT‘ SIGINT #第一次trap SIGINT while true do echo ‘hello‘ sleep 1 done [[email protected] prog]#
#!/bin/bash trap "echo trap ctrl+c" SIGINT while : do echo "Hi there" sleep 1 done #通过kill -l 命令可以看到,ctrl+C等同SIGINT,不会打断,但是会trap到所以显示trap ctrl+c
原文地址:https://www.cnblogs.com/uxiuxi/p/9974511.html
时间: 2024-10-06 00:53:58