日期:2014-05-16  浏览次数:20684 次

为什么不用sleep就打印不出来结果
正在学习shell,在关于捕捉信号的地方,按照书上的程序,run了一下,发现有时候按‘ctrl-c’能打印出LOOP的值,有时候打印不出来;
后来在网上找到了相关的例子,发现书上少了“sleep 1”,加上之后,就可以每次按‘ctrl-c’都打印出来了;
请问下高手,为什么不加sleep就打印不出来?

#!/bin/sh
#trap1
trap "my_exit" 2 
loop=0

my_exit()
{        
echo "you hit ctl=c, in  $loop"  --->如果没有sleep,有时候就只能打印到“in”这个单词就结束了
        echo "I will now exit"
        exit 1
}

while :
do 
   loop=`expr $loop + 1` 
   #sleep 1          -----> 这里需要加一个sleep 1,上面loop才能打印出来
done

------解决方案--------------------
不加sleep你多执行几次也能看到,这个是因为shell赋值会先清空,在赋值,所以有一定概率能看到,有一定的概率值清空了,就看不到了。