欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Shell腳本實現(xiàn)進度條的兩種方式

 更新時間:2023年03月30日 09:25:30   作者:Sudley.su  
本文主要介紹了Shell腳本實現(xiàn)進度條的兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1、腳本中各模塊(或函數(shù))運行過程可以量化,則可以直接使用帶百分比的進度條。

#!/bin/bash

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

如下圖,進度條中’#'的數(shù)量和進度條長度成正比,printf打印每次只回車不換行,新的異常打印會覆蓋之前的打印,執(zhí)行完成后使用echo換行。

2、有些情況下你也許不知道程序什么時候結(jié)束,只是需要一個動態(tài)的進度條來表示程序正在運行,比如進度條由[----------]變成[>---------],進度條里面的-不斷被>替換,當所有的-都被替換后所有符號又重新變成-,直到程序結(jié)束運行。

#!/bin/bash

trap 'onCtrlC' INT
function 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"

下圖是程序運行的幾個狀態(tài)

到此這篇關(guān)于Shell腳本實現(xiàn)進度條的兩種方式的文章就介紹到這了,更多相關(guān)Shell 進度條內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • shell腳本換行問題實戰(zhàn)記錄

    shell腳本換行問題實戰(zhàn)記錄

    換行相信大家都不陌生,下面這篇文章主要給大家介紹了關(guān)于shell腳本換行問題的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • shell腳本字符串處理的使用(分割、截取和拼接)

    shell腳本字符串處理的使用(分割、截取和拼接)

    本文主要介紹了shell腳本字符串處理的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Shell腳本echo指令使用小技巧

    Shell腳本echo指令使用小技巧

    這篇文章主要介紹了Shell腳本echo指令使用小技巧,包括使用echo指令輸出換行、輸出不換行、輸出變量等技巧,需要的朋友可以參考下
    2014-07-07
  • Shell踢人的三種方法

    Shell踢人的三種方法

    這篇文章主要介紹了Shell踢人的三種方法,首先用w查看當前登錄用戶,運行w命令的是當前用戶,需要保留,其他一概踢掉,需要的朋友可以參考下
    2014-12-12
  • Shell腳本中非交互式修改密碼的兩種方法

    Shell腳本中非交互式修改密碼的兩種方法

    這篇文章主要介紹了Shell腳本中非交互式修改密碼的兩種方法,本文講解了使用chpasswd和使用passwd和--stdin組合兩種方法,需要的朋友可以參考下
    2015-02-02
  • linux shell查看當前外網(wǎng)IP

    linux shell查看當前外網(wǎng)IP

    這篇文章主要介紹了如何在LINUX操作系統(tǒng)下查看本地IP地址(在SHELL下)的相關(guān)資料,需要的朋友可以參考下
    2015-09-09
  • Shell實用技巧:快速去除字符串中的空格

    Shell實用技巧:快速去除字符串中的空格

    這篇文章主要介紹了Shell實用技巧:快速去除字符串中的空格,本文給出了3種方法,分別講解了刪除行首空格、刪除行末空格、刪除所有空格等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • Linux下is not in the sudoers file的解決方案

    Linux下is not in the sudoers file的解決

    當我們使用sudo命令切換用戶的時候可能會遇到提示以下錯誤:用戶名 is not in the sudoers file.本文給大家分享原因分析及解決方案,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • 一個簡單的linux命令 cp

    一個簡單的linux命令 cp

    這篇文章主要介紹了一個簡單的linux命令cp,cp命令用來復制文件或者目錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Linux實現(xiàn)文件定期本地備份/異地備份/刪除備份的腳本

    Linux實現(xiàn)文件定期本地備份/異地備份/刪除備份的腳本

    數(shù)據(jù)備份的意義就在于,當受到網(wǎng)絡攻擊、入侵、電源故障或者操作失誤等事故的發(fā)生后,可以完整、快速、簡捷、可靠地恢復原有系統(tǒng)。本文為大家準備了文件定期本地備份/異地備份/刪除備份的腳本,希望對你們有所幫助
    2022-10-10

最新評論