免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4738 | 回复: 8
打印 上一主题 下一主题

请问用SHELL能否实现类似秒表的计时功能? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-03-13 21:42 |只看该作者 |倒序浏览
请问用SHELL能否实现类似秒表的计时功能?

论坛徽章:
0
2 [报告]
发表于 2003-03-14 01:21 |只看该作者

请问用SHELL能否实现类似秒表的计时功能?

...

可以做一个,但是好看是好看不了的。那还得要用利索点的工具来写, -_-

下面只是个范例演示一下,不是秒表 是个时钟

  1. #!/bin/sh
  2. abort()
  3. {
  4.     echo  "\033[m"
  5.     exit
  6. }

  7. echo  "\033[2J"
  8. echo  "\033[3;30H\c"
  9. echo "use CTRL-C to quit!"
  10. while :
  11. do
  12.     echo  "\033[1;5m \033[8;26H\c"
  13.     timestr=`date "+%Y-%m-%d %H:%M:%S"`
  14.     printf "    %s    " "$timestr"
  15.     trap abort 2

  16. done
复制代码

论坛徽章:
0
3 [报告]
发表于 2003-03-14 07:54 |只看该作者

请问用SHELL能否实现类似秒表的计时功能?

哈哈!

论坛徽章:
0
4 [报告]
发表于 2003-03-14 08:35 |只看该作者

请问用SHELL能否实现类似秒表的计时功能?

原帖由 "红袖添香" 发表:

while :
do
    echo  "\033[1;5m \033[8;26H\c"
    timestr=`date "+%Y-%m-%d %H:%M:%S"`
    printf "    %s    " "$timestr"
    trap abort 2

done   

其中trap abort 2  大概是检测ctrl+c键的,请问相当于什么,谢谢!!

论坛徽章:
0
5 [报告]
发表于 2003-03-14 23:50 |只看该作者

请问用SHELL能否实现类似秒表的计时功能?

希望大家提示一下,用C该怎么写呀?

论坛徽章:
0
6 [报告]
发表于 2003-03-17 23:17 |只看该作者

请问用SHELL能否实现类似秒表的计时功能?

原帖由 "bzzyg" 发表:

其中trap abort 2  大概是检测ctrl+c键的,请问相当于什么,谢谢!!


正是检测 ctrl-c.

因为程序如果用 ctrl-c 中断的话, 会由于中间设定的某些 ESC 转义字符而造成屏幕混乱. 所以要捕捉一下 ctrl-c , 然后执行一下 abort 子函数中的命令, 使终端恢复正常显示.

论坛徽章:
0
7 [报告]
发表于 2003-03-17 23:29 |只看该作者

请问用SHELL能否实现类似秒表的计时功能?

[quote]原帖由 "5646"]希望大家提示一下,用C该怎么写呀?[/quote 发表:



比如这样子,但这只是个雏型,具体得你按自己的要求去写。而且,因为usleep()睡眠不能保证时间的正确,因为运行其它语句也是要花时间。恐怕也没这么容易,也许你还得时间函数相结合起来。


  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int hour,min,sec,msec;
  5.     char esc = 27;

  6.     hour=min=sec=msec=0;
  7.     for(;;) {
  8.          if ( msec == 10 ) { msec=0; sec++; }
  9.          if ( sec == 60 ) { sec=0; min++; }
  10.          if ( min == 60 ) { min=0; hour++; }
  11.          printf("%c[2J",esc);
  12.          printf("%c[3;30H",esc);
  13.          printf("Now: %2d:%2d:%2d:%2d \n",hour,min,sec,msec);
  14.          usleep(100000);
  15.          msec++;
  16.     }
  17.     printf("%c[m",esc);
  18.     return(0);
  19. }
复制代码

论坛徽章:
0
8 [报告]
发表于 2003-03-19 22:21 |只看该作者

请问用SHELL能否实现类似秒表的计时功能?

呵呵,好,我找了好久了,这就去试试去!

论坛徽章:
0
9 [报告]
发表于 2003-06-12 18:04 |只看该作者

请问用SHELL能否实现类似秒表的计时功能?

我用shell中的print函数也可以轻松实现,请指教

  1. #!/bin/ksh
  2. #scriptname:timer
  3. function t {
  4. for i in 0 1 2 3 4 5 6 7 8 9;do
  5. echo -n "\t\t:$i\r"
  6. usleep 10
  7. done
  8. }
  9. print "Press CTRL+C OR CTRL+\ break!"
  10. while : ; do
  11. print -n "Run.....$(date|awk '{print $4}')\r";t
  12. done
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP