最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)

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

相關文章

最新評論

竹山县| 垣曲县| 综艺| 安义县| 昭平县| 拉萨市| 贵溪市| 永靖县| 衡阳市| 渑池县| 赤峰市| 南昌县| 栾川县| 崇阳县| 库伦旗| 漳浦县| 新沂市| 广安市| 彭山县| 韩城市| 云安县| 安陆市| 泾川县| 永川市| 湖南省| 永丰县| 思茅市| 陆良县| 华安县| 井陉县| 册亨县| 天门市| 吐鲁番市| 内丘县| 社会| 威远县| 七台河市| 金川县| 油尖旺区| 阿坝县| 大同市|