使用trap捕获信号,发现脚本内循环体中的sleep语句被跳过
发表于 : 2011-04-14 13:16
截屏如下:
wyf@wyf-laptop:~/lab/wyf28$ cat test16
#!/bin/bash
trap "echo Haha" SIGINT SIGTERM
echo This is a test program
count=1
while [ $count -le 5 ]
do
echo Loop \#$count
sleep 5
count=$[$count+1]
done
echo This is the end of the test program
wyf@wyf-laptop:~/lab/wyf28$ ./test16
This is a test program
Loop #1
Loop #2
Loop #3
Loop #4
Loop #5
This is the end of the test program
wyf@wyf-laptop:~/lab/wyf28$ ./test16
This is a test program
Loop #1
^CHaha
Loop #2
^CHaha
Loop #3
^CHaha
Loop #4
^CHaha
Loop #5
^CHaha
This is the end of the test program
wyf@wyf-laptop:~/lab/wyf28$
在脚本里使用trap捕获SIGINT 和 SIGTERM 信号
第一次运行脚本时,没有使用Ctrl+C,屏幕上打出Loop #1、Loop #2、Loop #3、Loop #4、Loop #5间隔是5秒,
但在第二次运行脚本时,连续使用Ctrl+C,在屏幕上输出Haha后立即打印出接下来的Loop...没有时间间隔了。
这是什么原因呢?
wyf@wyf-laptop:~/lab/wyf28$ cat test16
#!/bin/bash
trap "echo Haha" SIGINT SIGTERM
echo This is a test program
count=1
while [ $count -le 5 ]
do
echo Loop \#$count
sleep 5
count=$[$count+1]
done
echo This is the end of the test program
wyf@wyf-laptop:~/lab/wyf28$ ./test16
This is a test program
Loop #1
Loop #2
Loop #3
Loop #4
Loop #5
This is the end of the test program
wyf@wyf-laptop:~/lab/wyf28$ ./test16
This is a test program
Loop #1
^CHaha
Loop #2
^CHaha
Loop #3
^CHaha
Loop #4
^CHaha
Loop #5
^CHaha
This is the end of the test program
wyf@wyf-laptop:~/lab/wyf28$
在脚本里使用trap捕获SIGINT 和 SIGTERM 信号
第一次运行脚本时,没有使用Ctrl+C,屏幕上打出Loop #1、Loop #2、Loop #3、Loop #4、Loop #5间隔是5秒,
但在第二次运行脚本时,连续使用Ctrl+C,在屏幕上输出Haha后立即打印出接下来的Loop...没有时间间隔了。
这是什么原因呢?