91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Shell腳本實現進度條

發布時間:2023-03-31 16:52:17 來源:億速云 閱讀:197 作者:iii 欄目:開發技術

這篇文章主要介紹“怎么使用Shell腳本實現進度條”,在日常操作中,相信很多人在怎么使用Shell腳本實現進度條問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用Shell腳本實現進度條”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

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

#!/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

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

怎么使用Shell腳本實現進度條

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

#!/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"

下圖是程序運行的幾個狀態

怎么使用Shell腳本實現進度條

到此,關于“怎么使用Shell腳本實現進度條”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沧州市| 茌平县| 罗源县| 延边| 福州市| 辽宁省| 通江县| 农安县| 金溪县| 扶风县| 剑阁县| 望谟县| 宜章县| 松原市| 抚顺县| 昔阳县| 普兰店市| 宁强县| 那坡县| 蛟河市| 墨竹工卡县| 克东县| 文昌市| 河间市| 玉环县| 久治县| 呼和浩特市| 宝兴县| 扬州市| 延津县| 耒阳市| 梁河县| 志丹县| 渭源县| 丽江市| 金川县| 边坝县| 临武县| 新乡县| 凤城市| 门头沟区|