碰到一道面试题,每个10秒打印一次系统时间,投机取巧,弄成功了。
$ for i in `seq 1 10`;do date;sleep 10 ;done 2012年 08月 29日 星期三 08:51:32 CST 2012年 08月 29日 星期三 08:51:42 CST 2012年 08月 29日 星期三 08:51:52 CST 2012年 08月 29日 星期三 08:52:02 CST 2012年 08月 29日 星期三 08:52:12 CST 2012年 08月 29日 星期三 08:52:22 CST 2012年 08月 29日 星期三 08:52:32 CST 2012年 08月 29日 星期三 08:52:42 CST 2012年 08月 29日 星期三 08:52:52 CST 2012年 08月 29日 星期三 08:53:02 CST
这样做忽略了程序运行时间,不是很精确,所以能够成功,唬下人。
另外,用while循环+sleep(usleep)可以实现秒级(微秒级)的任务。示例脚本如下
while true do command sleep 1 done
这样做就会一致循环下去,用if 给它加一个开关锁
while true do if [ -f /tmp/file.lock ];then command sleep 1 else exit 0 fi done
想要停止循环,删除一个锁文件即可