文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么使用Shell脚本实现进度条

2023-07-05 19:07

关注

这篇文章主要介绍“怎么使用Shell脚本实现进度条”,在日常操作中,相信很多人在怎么使用Shell脚本实现进度条问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Shell脚本实现进度条”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

脚本中各模块(或函数)运行过程可以量化,则可以直接使用带百分比的进度条。

#!/bin/bashmark=''for ((ratio=0;${ratio}<=100;ratio+=5))do        sleep 0.2        printf "progress:[%-40s]%d%%\r" "${mark}" "${ratio}"        mark="##${mark}"doneecho

如下图,进度条中&rsquo;#'的数量和进度条长度成正比,printf打印每次只回车不换行,新的异常打印会覆盖之前的打印,执行完成后使用echo换行。

怎么使用Shell脚本实现进度条

有些情况下你也许不知道程序什么时候结束,只是需要一个动态的进度条来表示程序正在运行,比如进度条由[----------]变成[>---------],进度条里面的-不断被>替换,当所有的-都被替换后所有符号又重新变成-,直到程序结束运行。

#!/bin/bashtrap 'onCtrlC' INTfunction onCtrlC () {        #捕获CTRL+C,当脚本被ctrl+c的形式终止时同时终止程序的后台进程        kill -9 ${do_sth_pid} ${progress_pid}        echo        echo 'Ctrl+C is captured'        exit 1}do_sth() {        #运行的主程序        sleep 10}progress() {        #进度条程序        local main_pid=$1        local length=20        local ratio=1        while [ "$(ps -p ${main_pid} | wc -l)" -ne "1" ] ; do                mark='>'                progress_bar=                for i in $(seq 1 "${length}"); do                        if [ "$i" -gt "${ratio}" ] ; then                                mark='-'                        fi                        progress_bar="${progress_bar}${mark}"                done                printf "Progress: ${progress_bar}\r"                ratio=$((ratio+1))                #ratio=`expr ${ratio} + 1`                if [ "${ratio}" -gt "${length}" ] ; then                        ratio=1                fi                sleep 0.1        done}do_sth &do_sth_pid=$(jobs -p | tail -1)progress "${do_sth_pid}" &progress_pid=$(jobs -p | tail -1)wait "${do_sth_pid}"printf "Progress: done                \n"

下图是程序运行的几个状态

怎么使用Shell脚本实现进度条

到此,关于“怎么使用Shell脚本实现进度条”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯