网站首页
本站精华
免费下载
游客:
注册
|
登录
|
会员
|
搜索
|
帮助
LoveUnix
»
编程开发 & Rational
» shell脚本中模拟Linux和BSD风格的进度条
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: shell脚本中模拟Linux和BSD风格的进度条
freedemon
技术专家
UID 141
精华
7
积分 78
帖子 128
活跃指数 0
LU金币 5406 个
LU金条 0 个
阅读权限 200
注册 2003-9-26
#1
大
中
小
使用道具
发表于 2005-2-26 18:30
资料
个人空间
主页
短消息
加为好友
使用Unix的朋友们恐怕都对Linux中加载内核时的"Loading Vmlinuz..........."
或BSD boot时旋转的卫星小信号映像颇深,其实我们也可以在自己的脚本中模拟
这样的动态进度条。使用下面两个脚本的模式,替换程序主体为你自己的脚本。
虽然有少许缺陷,但是一样有不小的乐趣哦。
程序1:模拟Linux loading kernel
CODE
#####################################################################
#!/bin/sh
#输出"."进度条函数,兼容bsh、ksh、bash
#首先trap 1 2 3 15信号,重要
trap 'kill $BG_PID;echo;exit' 1 2 3 15
function dots
{
stty -echo >/dev/null 2>&1
while true
do
echo ".\c"
sleep 1
done
stty echo
echo
}
#---------------------------------------------
# 主程序开始
#---------------------------------------------
#首先使dots函数后台运行
dots &
BG_PID=$!
#开始程序主体,本例中执行休眠10秒
#注意必要时使用 >/dev/null 2>&1关闭输出和错误回显,避免破坏显示
sleep 10
#程序结尾注意kill dots,否则dots会一直执行
kill $BG_PID
#####################################################################
程序2:模拟FreeBSD loading kernel
CODE
#####################################################################
#!/bin/sh
#输出"*"进度条函数,兼容bsh、ksh、bash
#首先trap 1 2 3 15信号,重要
trap 'kill $BG_PID;echo;exit' 1 2 3 15
function rotate
{
INTERVAL=0.1 #进度条旋转时间0.1秒,注意并不是所有系统都支持非整数
TCOUNT="0"
stty -echo >/dev/null 2>&1
while :
do
TCOUNT=`expr $TCOUNT + 1`
case $TCOUNT in
"1") echo '-'"\b\c"
sleep $INTERVAL
;;
"2") echo '\\'"\b\c"
sleep $INTERVAL
;;
"3") echo "|\b\c"
sleep $INTERVAL
;;
"4") echo "/\b\c"
sleep $INTERVAL
;;
*) TCOUNT="0";;
esac
done
stty echo
}
#---------------------------------------------
# 主程序开始
#---------------------------------------------
#首先使rotate函数后台运行
rotate &
ROTATE_PID=$!
#开始程序主体,本例中执行休眠10秒
#注意必要时使用 >/dev/null 2>&1关闭输出和错误回显,避免破坏显示
sleep 10
#程序结尾注意kill dots,否则dots会一直执行;清除多余字符
kill -9 $ROTATE_PID
echo "\b\b"
#####################################################################
.
灌过coolunix,灌过unixaid,灌过linuxaid和chinaunix,现在来陪大叔一起灌溉loveunix ~_*
lozity
LU新生
UID 19918
精华 0
积分 2
帖子 4
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2004-5-5
#2
大
中
小
使用道具
发表于 2005-3-2 08:39
资料
个人空间
短消息
加为好友
这么好的东西为什么没人顶!!!
huoran
LU幼天使
UID 14569
精华 0
积分 30
帖子 59
活跃指数 1
LU金币 2015 个
LU金条 0 个
阅读权限 20
注册 2004-3-11
#3
大
中
小
使用道具
发表于 2005-3-24 18:10
资料
个人空间
短消息
加为好友
我还没用过Linux & BSD
只现在用AIX 不会把系统搞瘫痪了吧。收藏先,等那天试一下。
Komtas
LU新生
UID 26646
精华 0
积分 15
帖子 29
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2004-9-26
#4
大
中
小
使用道具
发表于 2005-3-24 19:50
资料
个人空间
短消息
加为好友
偶以为只能用ncurses才能实现的
Komtas
LU新生
UID 26646
精华 0
积分 15
帖子 29
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2004-9-26
#5
大
中
小
使用道具
发表于 2005-3-24 19:51
资料
个人空间
短消息
加为好友
下次做安装程序时带上
wf201626
(Cappy Wang)
LU幼天使
UID 1016
精华
4
积分 98
帖子 156
活跃指数 70
LU金币 455 个
LU金条 2000 个
阅读权限 20
注册 2003-10-26
来自 Owen Sound, On. Canada
#6
大
中
小
使用道具
发表于 2005-3-24 21:46
资料
个人空间
主页
短消息
加为好友
it is wanderful!
i've test them on aix 5.1
both of them work fine
thanks
成功的男人白天瞎JB忙,晚上JB瞎忙;失败的男人白天没JB事,晚上JB没啥事… …所以,我要做成功的男人!
[广告]
记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
rofee
LU新生
UID 1746
精华 0
积分 16
帖子 31
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2003-11-5
#7
大
中
小
使用道具
发表于 2005-4-15 14:26
资料
个人空间
短消息
加为好友
对于这个脚本:BSD boot时旋转的卫星小信号
程序运行结束后,屏幕上会打印一个字符出来,比如"\",如何消掉
[广告]
记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
w_xl
LU新生
UID 14541
精华 0
积分 1
帖子 1
活跃指数 0
LU金币 2007 个
LU金条 0 个
阅读权限 10
注册 2004-3-11
#8
大
中
小
使用道具
发表于 2005-10-19 23:24
资料
个人空间
短消息
加为好友
QUOTE:
原帖由
rofee
于 2005-4-15 14:26 发表
对于这个脚本:BSD boot时旋转的卫星小信号<br />程序运行结束后,屏幕上会打印一个字符出来,比如"\",如何消掉
只需将echo "\b\b"改为echo "\b \b"
另:第一种最好在kill $BG_PID前加上echo,以便回车换行。
[广告]
记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
renminyan
LU新生
UID 90835
精华 0
积分 1
帖子 1
活跃指数 0
LU金币 1 个
LU金条 0 个
阅读权限 10
注册 2007-6-5
#9
大
中
小
使用道具
发表于 2007-6-5 10:14
资料
个人空间
短消息
加为好友
ding~~~~~~~~~~~~~~~~
[广告]
记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
showbu
LU幼天使
UID 93432
精华 0
积分 20
帖子 36
活跃指数 2
LU金币 38 个
LU金条 0 个
阅读权限 20
注册 2007-7-26
#10
大
中
小
使用道具
发表于 2007-8-14 14:37
资料
个人空间
短消息
加为好友
强贴必留名,收藏!!!!
[广告]
土人
aix9030
LU幼天使
UID 41103
精华 0
积分 141
帖子 248
活跃指数 3
LU金币 206 个
LU金条 0 个
阅读权限 20
注册 2006-2-20
#11
大
中
小
使用道具
发表于 2007-9-13 13:38
资料
个人空间
短消息
加为好友
学习了!
[广告]
土人
awk
LU新生
UID 106928
精华 0
积分 7
帖子 11
活跃指数 0
LU金币 11 个
LU金条 0 个
阅读权限 10
注册 2008-5-21
#12
大
中
小
使用道具
发表于 2008-5-21 21:51
资料
个人空间
短消息
加为好友
强贴必留名,收藏中!!!
[广告]
土人
投票
交易
悬赏
活动
LoveUnix
专项技术区
> AIX -IBM UNIX
> 其他UNIX & Linux
> i5 (AS400) & IBM大机
> PC Server & HPC
> 存储设备
> 备份软件
> 网络 & 安全
> 编程开发 & Rational
> DB2 & Informix
> ORACLE等数据库
> 中间件技术
行业综合区
> 职业咨询 前程无忧
> 培训认证 行业入门
> 行业应用 项目实施
> 产品信息 商务交流
> Free download下载
交流灌水区
> 蓝色太平洋
> 墨香雅韵
> 共建家园
> 博客专区
当前时区 GMT+8, 现在时间是 2008-8-21 06:08
乐悠LoveUnix论坛-京ICP备05005823号
Thanks to
Discuz!
© 2001-2007 Power by
LoveUnix.net
Processed in 0.057152 second(s), 6 queries , Gzip enabled
TOP
清除 Cookies
-
联系我们
-
乐悠LoveUnix
-
Archiver
界面风格
----------
Discuz! 5 Default
新DISCUZ风格
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
流量统计
客户软件
发帖量记录
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计