trap可以用在shell/ target=_blank class=infotextkey>shell脚本接收各种中断信号。
在shell中针对同个信号不同的函数有不同的处理手法时,可参考如下用例:
#!/bin/bash
#edit by www.jb200.com
trap "_reload $1" 1
_f1(){
echo $$
while((1))
do
date
sleep 0.5
done
}
_f2(){
echo $$
while((1))
do
uptime
sleep 0.5
done
}
_reload(){
[ $1 -eq 2 ]&&echo $$
}
case $1 in
1)
_f1;;
2)
_f2;;
esac
保存为:test.sh。
以上脚本实现了2个函数,_t1和_t2,分别用参数1和2调用:
脚本接受kill -1 test.sh_pid时,执行_reload函数,判断$1等于2时,输出进程号,否则没动作。
即只有执行test.sh 2时,接收到kill -1信号才会有动作。
test.sh 1时,kill -1对其没影响。