shell下输出百分比进度

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/cheng_870701/article/details/102767274

场景概述:执行280万条sql,全是update,每执行一条,将输出结果输出到日志里。

要求:输出当前执行进度,百分比显示。

思路:进度需要知道总量和当前执行的量。总量获得方式:

total=`grep update a.sql|wc -l`

当前执行量获得方式:

current=`grep updated a.log|wc -l`

bash中浮点数运算的命令为

#scale表示保留小数位数
result=`echo `scale=2;($current/$total)*100`|bc`

为了使百分数总是覆盖之前的,需要使用的命令是

#-n表示不换行,-e表示解析后边的特殊字符,而\b表示退格,即删除之前的字符,可以多写几个
echo -ne '\b\b\b\b\b\b'

综合以上的命令,进行循环输出显示的代码如下:

while :
do
sleep 1
total=`grep update a.sql|wc -l`
current=`grep updated a.log|wc -l`
result=`echo `scale=2;($current/$total)*100`|bc`
echo -ne "\b\b\b\b\b\b${result}%"
if [ $result -eq 100 ];then
 break
fi
done

猜你喜欢

转载自blog.csdn.net/cheng_870701/article/details/102767274
今日推荐