免费注册 查看新帖 |

Chinaunix

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

\ | / - 的旋转效果如何实现?  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-02-18 09:28 |只看该作者 |倒序浏览
安装系统或什么软件时经常看到用\ | / - 四个符号作成旋转的效果代表程序正在运行,这个用shell是怎么实现的?是否还能判断上一个操作的返回值?

论坛徽章:
0
2 [报告]
发表于 2004-02-18 10:59 |只看该作者

\ | / - 的旋转效果如何实现?

将第一个sleep 30换成任意需要执行的程序
  1. #!/bin/bash

  2. #加&,后台方式运行要运行的程序
  3. sleep 30&

  4. #取得上面后台程序的进程号
  5. id=$!

  6. #定义显示的旋转字符
  7. char=("-" "/" "|" "\\")
  8. n=0

  9. #ps -ax, 显示所有进程
  10. #grep .., 查找$id所代表的进程是否存在
  11. #>/dev/null, 隐藏grep的输出
  12. while ps -ax | grep "^[[:space:]]*$id" > /dev/null
  13. do
  14.         #显示如"Waiting... -"的字样
  15.         echo -ne "\rWaiting... ${char[$n]}"

  16.         #取下一个旋转字符
  17.         n=$(( (n+1)%4 ))

  18.         sleep 1
  19. done
  20. echo OK.
复制代码

论坛徽章:
0
3 [报告]
发表于 2004-02-18 12:11 |只看该作者

\ | / - 的旋转效果如何实现?

楼上的兄弟来点注释如何?

论坛徽章:
0
4 [报告]
发表于 2004-02-18 12:20 |只看该作者

\ | / - 的旋转效果如何实现?

[quote]原帖由 "yoof"]楼上的兄弟来点注释如何?[/quote 发表:


好,加上了,不过看上去有些累赘

论坛徽章:
0
5 [报告]
发表于 2004-02-18 13:33 |只看该作者

\ | / - 的旋转效果如何实现?

n=$(( (n+1)%4 ))

中的这个%4是何意?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-02-18 13:59 |只看该作者

\ | / - 的旋转效果如何实现?

原帖由 "yoof" 发表:
n=$(( (n+1)%4 ))

中的这个%4是何意?

那是"除以 4 之餘數"...

论坛徽章:
0
7 [报告]
发表于 2004-02-18 14:03 |只看该作者

\ | / - 的旋转效果如何实现?

我用了死循环,ctrl-C终止
#! /usr/bin/ksh

str[1]="-"
str[2]="/"
str[3]="|"
str[4]="\\"
clear     #清屏
n=1
while true
do
    echo "\033[3;18H Waiting...${str[$n]}"
    (( n=(n+1)%5 ))
    if [ n -eq 0 ]
    then
         (( n=1 ))
    fi
    sleep 1
done

论坛徽章:
0
8 [报告]
发表于 2004-02-18 15:21 |只看该作者

\ | / - 的旋转效果如何实现?

多谢飞灰橙兄和龙井茶兄的回复
bash版的运行没问题,但ksh版的需要清屏且只能显示在固定位置,能否不清屏,显示在执行信息的下一行?
还有第2个问题:是否还能判断后台进程的返回值?

论坛徽章:
0
9 [报告]
发表于 2004-02-18 15:41 |只看该作者

\ | / - 的旋转效果如何实现?

这个问题让我想起了'红袖'

论坛徽章:
0
10 [报告]
发表于 2004-02-18 15:55 |只看该作者

\ | / - 的旋转效果如何实现?

[quote]原帖由 "大红机器"]还有第2个问题:是否还能判断后台进程的返回值?[/quote 发表:

将最后一行"echo OK."改为

  1. #取得子进程的返回值,作为wait的返回值
  2. wait $id

  3. #$?包含最近一个结束的"前台"进程的返回值
  4. echo -e "\nReturn value: $?."
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP