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

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

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

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

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

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

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

#!/bin/bash

trap 'onCtrlC' INT
function onCtrlC () {
        #捕獲CTRL+C,當(dāng)腳本被ctrl+c的形式終止時(shí)同時(shí)終止程序的后臺(tái)進(jìn)程
        kill -9 ${do_sth_pid} ${progress_pid}
        echo
        echo 'Ctrl+C is captured'
        exit 1
}

do_sth() {
        #運(yùn)行的主程序
        sleep 10
}

progress() {
        #進(jìn)度條程序
        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"

下圖是程序運(yùn)行的幾個(gè)狀態(tài)

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

相關(guān)文章

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

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

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

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

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

    Shell腳本echo指令使用小技巧

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

    Shell踢人的三種方法

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

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

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

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

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

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

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

    Linux下is not in the sudoers file的解決

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

    一個(gè)簡(jiǎn)單的linux命令 cp

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

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

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

最新評(píng)論