1. 注册信号处理
#!/bin/bash
function CleanUp()
{
echo "clean up"
}
trap CleanUp 2
sleep 10
echo "exit"
2. 定时器
#!/bin/bash
function StartTimer()
{
# 如果没有指定,默认10s
local INTERVAL=${1:-10}
if [ $INTERVAL -gt 0 ]; then
# 定时时间后向自己发信号
sleep $INTERVAL && kill -s 14 $$ &
# 记住后台进程PID,如果用户需要,用于杀死后台进程
TIMERPID=$!
else
echo "Error : interval must be positive "
return 1
fi
}
function UnsetTimer()
{
# 杀死子进程
kill $(pgrep -P $TIMERPID)
# 杀死父进程
kill $TIMERPID
}
function ExpireHandler()
{
echo ""
echo "Timeout, bye !"
exit 14
}
# 若用户5秒没有输入,则停止等待
StartTimer 5
trap ExpireHandler 14
read -p "Please input your id : " id
# 取消定时器
UnsetTimer
echo "Your id is $id"