赞
踩
用法:trap [-lp] [[参数] 信号声明 …]
可以捕捉Linux进程的信号、也可以捕捉shell脚本运行过程的信号;信号处理可以单纯打印信息、也可以调用函数处理;支持多次修改同一个信号捕捉等等…
示例1: 打印信息
#!/bin/bash
echo 'I am testing the "trap" command...'
# Capture "Ctrl + c"
trap 'echo "You have press Ctrl-c"' SIGINT
while true;do
echo "Loop..."
sleep 2
done
现象:
book@book-VirtualBox:~/trap_test$ ./test.sh
I am testing the "trap" command...
Loop...
Loop...
^CYou have press Ctrl-c
Loop...
Loop...
^CYou have press Ctrl-c
Loop...
^CYou have press Ctrl-c
Loop...
^Z
[4]+ 已停止 ./test.sh
book@book-VirtualBox:~/trap_test$
示例2: 调用函数
#!/bin/bash
echo 'I am testing the "trap" command...'
function exit_handler(){
echo "Goodbye!"
}
# Capture "Ctrl + c"
trap 'exit_handler' EXIT
sleep 2
echo "Shell script exit!"
现象:
book@book-VirtualBox:~/trap_test$ ./test.sh
I am testing the "trap" command...
Shell script exit!
Goodbye!
book@book-VirtualBox:~/trap_test$
用法:trap – ‘’ 信号声明
示例:
#!/bin/bash
# Disable capture "Ctrl + c"
trap -- '' SIGINT
while true;do
echo "Loop..."
sleep 2
done
现象:
book@book-VirtualBox:~/trap_test$ ./test.sh
Loop...
Loop...
^C^CLoop...
^CLoop...
^Z
[16]+ 已停止 ./test.sh
book@book-VirtualBox:~/trap_test$
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。