• shell最简单的办法实现进度条


    一直很好奇shell命令行安装脚本的时候怎么实现自动增长进度条而且不增加新输出的问题。以前一直觉得是不断print出来东西,但是已经输出到命令行终端的为什么也能被覆盖呢,于是看到别人写的进度条,不断尝试,发现核心功能非常简单,就是不断的printf " "

    代码如下

    #!/bin/bash
    
    processBar()
    {
        process=$1
        whole=$2
        printf "[%03d/%03d]
    " $process $whole
    }
    
    whole=100
    process=0
    while [ $process -lt $whole ] 
    do
        let process++
        processBar $process $whole
        sleep 0.1
    done
    printf "
    "

    然后我做了非常简单版本的核心代码

    #!/bin/bash
    printf "1
    "
    sleep 1
    printf "2
    "
    sleep 1
    printf "3
    "
    sleep 1
    printf "4
    "
    sleep 1
    printf "5
    "
    sleep 1

    我发现这样也能从 1 一直变到 5 。很让人费解这里面的原理是什么。

    我看了一下 shell printf 解释参数中 是回车的意思,至今还没搞懂是为什么。有网友明白的可以给我留言答疑解惑,不甚感激!

     后续更新(2020-05-22)

    五分钟后 我好像有点眉目了

    这个打印换行把刚刚输出的东西覆盖了,如果调换 和数字顺序 发现后面的覆盖前面的最后留下来5,就是用回车进行覆盖,实现动态变化输出

  • 相关阅读:
    java容器01--初遇
    java虚拟机(1)--运行时数据区
    java虚拟机(2)--垃圾收集
    java虚拟机(3)--内存分配与回收策略
    java虚拟机(4)--类加载机制
    bash编程的信号捕获:
    awk纯干货
    shell中各种括号的作用()、(())、[]、[[]]、{}
    find
    awk
  • 原文地址:https://www.cnblogs.com/lizhaoyao/p/12936051.html
Copyright © 2020-2023  润新知