shell 输出进度条

sh/bash/dash/ksh/zsh等Shell脚本
mad_frog
帖子: 55
注册时间: 2011-06-29 11:26

shell 输出进度条

#1

帖子 mad_frog » 2012-06-26 14:33

我想我在运行脚本的时候输出进度条,如何实现呀,进度条跑的时间取决于脚本运行的时间@_@
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: shell 输出进度条

#2

帖子 xiooli » 2012-06-26 14:57

mad_frog
帖子: 55
注册时间: 2011-06-29 11:26

Re: shell 输出进度条

#3

帖子 mad_frog » 2012-06-26 15:06

这是什么呀?
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: shell 输出进度条

#4

帖子 枫叶饭团 » 2012-06-26 15:08

mad_frog 写了:这是什么呀?
附件
test.png
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: shell 输出进度条

#5

帖子 枫叶饭团 » 2012-06-26 15:15

[bash]for ((i=0;i<=50;i++))
do
for ((j=0;j<=$i;j+=1))
do
printf ">"
done
for ((k=0;k<=50-$j;k+=1))
do
printf "="
done
printf "\r"
sleep 0.1
done
echo ""
[/bash]

代码: 全选

printf "\r"
这个学习了
mad_frog
帖子: 55
注册时间: 2011-06-29 11:26

Re: shell 输出进度条

#6

帖子 mad_frog » 2012-06-26 15:17

我的意思是它进度是根据我的脚本运行的时间来运行的呀
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: shell 输出进度条

#7

帖子 xiooli » 2012-06-26 15:25

mad_frog 写了:我的意思是它进度是根据我的脚本运行的时间来运行的呀
那还不简单,过一会打印一个=不就行了?
mad_frog
帖子: 55
注册时间: 2011-06-29 11:26

Re: shell 输出进度条

#8

帖子 mad_frog » 2012-06-26 15:28

mad_frog 写了:我的意思是它进度是根据我的脚本运行的时间来运行的呀
不懂
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: shell 输出进度条

#9

帖子 eexpress » 2012-06-26 15:29

某些命令带-v
某些可以用rsync代替
某些如dd可以用watch
某些可以用bar

没一个好的。其实我忘记了一个命令。
● 鸣学
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: shell 输出进度条

#10

帖子 枫叶饭团 » 2012-06-26 15:32

[bash]
time1=`date +'%s'`
go() {
time2=`date +'%s'`
for ((;i<=$(($time2-$time1));i+=1))
do
printf ">"
done
}
while :
do
go
sleep 0.1
done
[/bash]今天心情好就写帮你写个了,授之以鱼不如授之以渔
mad_frog
帖子: 55
注册时间: 2011-06-29 11:26

Re: shell 输出进度条

#11

帖子 mad_frog » 2012-06-26 15:40

eexpress 写了:某些命令带-v
某些可以用rsync代替
某些如dd可以用watch
某些可以用bar

没一个好的。其实我忘记了一个命令。
想起来了么 :em01
-v rsync watch bar只是运行带个命令才能看到结果的吧,
mad_frog
帖子: 55
注册时间: 2011-06-29 11:26

Re: shell 输出进度条

#12

帖子 mad_frog » 2012-06-26 16:09

应该可以通过pid查看进程,

cp -rf /home/server.tar.gz /root/ &
echo -ne "\033[1;31mCopy files , please wait "
#
i=0
while [ $i -lt 100000000 ]
do
for j in '-' '\\' '|' '/'
do
echo -ne "\033[1D$j"
usleep 50000
done
((i++))
if [ -s `pidof -s cp` ]; then
echo -e "\033[1D\033[1;31mOK! \033[0m"
break
fi
done
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: shell 输出进度条

#13

帖子 aerofox » 2012-06-26 17:36

mad_frog 写了:我的意思是它进度是根据我的脚本运行的时间来运行的呀
如果是想显示百分比,那么恐怕没有通用的办法。
头像
longxin1991
帖子: 1991
注册时间: 2010-07-29 10:53
系统: ukylin 20.04
联系:

Re: shell 输出进度条

#14

帖子 longxin1991 » 2012-06-26 18:11

学习了....
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: shell 输出进度条

#15

帖子 cao627 » 2012-06-26 20:13

代码: 全选

printf "\r"
不换行,回到行首。
学习!
回复