首页 > 系统相关 >shell实现的进度条

shell实现的进度条

时间:2022-12-03 10:01:45浏览次数:57  
标签:CURRENT shell 进度条 实现 PARAM echo delay ge PROGRESS

​具体脚本如下progressbar.sh​​:

#The MIT License (MIT)

#Copyright (c) 2014 Hai Kieu

#Permission is hereby granted, free of charge, to any person obtaining a copy
#of this software and associated documentation files (the "Software"), to deal
#in the Software without restriction, including without limitation the rights
#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
#copies of the Software, and to permit persons to whom the Software is
#furnished to do so, subject to the following conditions:

#The above copyright notice and this permission notice shall be included in all
#copies or substantial portions of the Software.

#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
#SOFTWARE.

############################---Description---###################################
# #
# Summary : Show a progress bar GUI on terminal platform #
# Support : [email protected] #
# Created date : Aug 12,2014 #
# Latest Modified date : Nov 20,2017 #
# #
################################################################################

############################---Usage---#########################################

# Copy below functions (delay and progress fuctions) into your shell script directly
# Then invoke progress function to show progress bar

# In other way, you could import source indirectly then using. Nothing different

################################################################################


#
# Description : delay executing script
#
function delay()
{
sleep 0.2;
}

#
# Description : print out executing progress
#
CURRENT_PROGRESS=0
function progress()
{
PARAM_PROGRESS=$1;
PARAM_PHASE=$2;

if [ $CURRENT_PROGRESS -le 0 -a $PARAM_PROGRESS -ge 0 ] ; then echo -ne "[..........................] (0%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 5 -a $PARAM_PROGRESS -ge 5 ] ; then echo -ne "[#.........................] (5%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 10 -a $PARAM_PROGRESS -ge 10 ]; then echo -ne "[##........................] (10%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 15 -a $PARAM_PROGRESS -ge 15 ]; then echo -ne "[###.......................] (15%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 20 -a $PARAM_PROGRESS -ge 20 ]; then echo -ne "[####......................] (20%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 25 -a $PARAM_PROGRESS -ge 25 ]; then echo -ne "[#####.....................] (25%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 30 -a $PARAM_PROGRESS -ge 30 ]; then echo -ne "[######....................] (30%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 35 -a $PARAM_PROGRESS -ge 35 ]; then echo -ne "[#######...................] (35%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 40 -a $PARAM_PROGRESS -ge 40 ]; then echo -ne "[########..................] (40%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 45 -a $PARAM_PROGRESS -ge 45 ]; then echo -ne "[#########.................] (45%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 50 -a $PARAM_PROGRESS -ge 50 ]; then echo -ne "[##########................] (50%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 55 -a $PARAM_PROGRESS -ge 55 ]; then echo -ne "[###########...............] (55%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 60 -a $PARAM_PROGRESS -ge 60 ]; then echo -ne "[############..............] (60%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 65 -a $PARAM_PROGRESS -ge 65 ]; then echo -ne "[#############.............] (65%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 70 -a $PARAM_PROGRESS -ge 70 ]; then echo -ne "[###############...........] (70%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 75 -a $PARAM_PROGRESS -ge 75 ]; then echo -ne "[#################.........] (75%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 80 -a $PARAM_PROGRESS -ge 80 ]; then echo -ne "[####################......] (80%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 85 -a $PARAM_PROGRESS -ge 85 ]; then echo -ne "[#######################...] (85%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 90 -a $PARAM_PROGRESS -ge 90 ]; then echo -ne "[##########################] (100%) $PARAM_PHASE \r" ; delay; fi;
if [ $CURRENT_PROGRESS -le 100 -a $PARAM_PROGRESS -ge 100 ];then echo -ne 'Done! \n' ; delay; fi;

CURRENT_PROGRESS=$PARAM_PROGRESS;

}

#################################### DEMO ######################################

# This is a simple demostration

# Important notice: below code is not necessary in your code, remember to remove before using

################################################################################

echo "The task is in progress, please wait a few seconds"

#Do some tasks
progress 10 Initialize
#Do some tasks
progress 20 "Phase 1 "
#Do some tasks
progress 40 "Phase 2 "
#Do some tasks
progress 60 "Processing..."
#Do some tasks
progress 80 "Processing..."
#Do some tasks
progress 90 "Processing..."
#Do some tasks
progress 100 "Done "

echo

shell实现的进度条_Software

可以看到已经实现了进度条。

标签:CURRENT,shell,进度条,实现,PARAM,echo,delay,ge,PROGRESS
From: https://blog.51cto.com/u_13753753/5908476

相关文章

  • 基于Nacos实现日志级别的动态切换
    想要实现日志级别动态切换有两个要点:1.监听Nacos配置文件修改2.根据配置动态设置当前日志级别监听Nacos监听类代码:packagecom.yibing.nacosprovider.listener;impor......
  • wexpect - 一个可以自动化交互式shell输入的库
    linux下有个pexpect的lib,可以实现一些交互式输入,pexpect网上的教程很多,这里就不多说了;但这个库不能用于windows,如果要实现windows下shell自动化交互式操作的话,可以参考p......
  • js实现截取文件后缀,input触发的事件触发流程,input type=file 同一个文件两次上传,第二
    https://blog.csdn.net/m0_46693606/article/details/127067545varfilePath="jb51.png";varindex=filePath.lastIndexOf(".");//获取后缀varext=filePath.subs......
  • 好友关注-Feed流实现方案
    当我们关注了用户后,这个用户发了动态,那么我们应该把这些数据推送给用户,这个需求,其实我们又把他叫做Feed流,关注推送也叫做Feed流,直译为投喂。为用户持续的提供“沉浸式”的......
  • Ubutu+Apache+Mono 实现.net开发的网站跨平台移植
    最近公司转型,需要将现有使用的.net技术开发的平台系统在linux系统上跑起来,一方面是为了节省成本(Linux免费),另一方面,现在是大数据的填写,所有的技术要向java平台移植,起到一个......
  • 控制器实现脚本逻辑
    If控制器:条件符合时执行控制器的子节点内容 示例:判断${is_run}=1是否成立,如果成立就执行http请求;复选框“Evaluateforall children?”表示是否对所有子节点......
  • vue实现按钮多选
    需求是这样: 首先考虑使用elementui中的组建实现,但是有时候会忽略组建。实现方式两种:1.直接使用element实现letweekTimeData:['星期一','星期二','星......
  • SSM使用ajax实现图片上传与删除功能
    图片上传与删除​​1.上传文件​​​​2.删除数据,并且删除对应的文件​​​​3.修改上传文件至非项目路径​​之前写了一篇博客记录了关于修改资料中的图片上传​​(传送门......
  • 分布式数据库的具体实现与对比分析
    1.前言随着传统的数据库、计算机网络和数字通信技术的快速发展,以数据分布存储和分布处理为主要特征的分布式数据库系统的研究和开发越来越受到人们的关注。如何在一个数据库......
  • 用单个神经元实现TensorFlow线性回归拟合
        很多介绍TF开发的书籍中都喜欢用逻辑回归拟合线性二维数据来开始介绍TF的开发过程,按照数据准备,模型搭建,反向损失函数定义和训练模型,使用模型的的顺序来介绍,并给......