分页: 1 / 2

shell 输出进度条

发表于 : 2012-06-26 14:33
mad_frog
我想我在运行脚本的时候输出进度条,如何实现呀,进度条跑的时间取决于脚本运行的时间@_@

Re: shell 输出进度条

发表于 : 2012-06-26 14:57
xiooli

Re: shell 输出进度条

发表于 : 2012-06-26 15:06
mad_frog
这是什么呀?

Re: shell 输出进度条

发表于 : 2012-06-26 15:08
枫叶饭团
mad_frog 写了:这是什么呀?

Re: shell 输出进度条

发表于 : 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"
这个学习了

Re: shell 输出进度条

发表于 : 2012-06-26 15:17
mad_frog
我的意思是它进度是根据我的脚本运行的时间来运行的呀

Re: shell 输出进度条

发表于 : 2012-06-26 15:25
xiooli
mad_frog 写了:我的意思是它进度是根据我的脚本运行的时间来运行的呀
那还不简单,过一会打印一个=不就行了?

Re: shell 输出进度条

发表于 : 2012-06-26 15:28
mad_frog
mad_frog 写了:我的意思是它进度是根据我的脚本运行的时间来运行的呀
不懂

Re: shell 输出进度条

发表于 : 2012-06-26 15:29
eexpress
某些命令带-v
某些可以用rsync代替
某些如dd可以用watch
某些可以用bar

没一个好的。其实我忘记了一个命令。

Re: shell 输出进度条

发表于 : 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]今天心情好就写帮你写个了,授之以鱼不如授之以渔

Re: shell 输出进度条

发表于 : 2012-06-26 15:40
mad_frog
eexpress 写了:某些命令带-v
某些可以用rsync代替
某些如dd可以用watch
某些可以用bar

没一个好的。其实我忘记了一个命令。
想起来了么 :em01
-v rsync watch bar只是运行带个命令才能看到结果的吧,

Re: shell 输出进度条

发表于 : 2012-06-26 16:09
mad_frog
应该可以通过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

Re: shell 输出进度条

发表于 : 2012-06-26 17:36
aerofox
mad_frog 写了:我的意思是它进度是根据我的脚本运行的时间来运行的呀
如果是想显示百分比,那么恐怕没有通用的办法。

Re: shell 输出进度条

发表于 : 2012-06-26 18:11
longxin1991
学习了....

Re: shell 输出进度条

发表于 : 2012-06-26 20:13
cao627

代码: 全选

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