iT邦幫忙

DAY 23
3

我與BASH shell scripting的每一天系列 第 23

我與BASH的每一天 - [23] 顯示程式執行的進度

老大希望我在程式上加上顯示執行的進度,也就是要能顯示提示目前程式還在執行或者是顯示進度,免得因為程式跑太久而讓使用者以為程式沒有回應了。想了半天,最後找到利用檢查背景執行狀態的技巧來實作。

statbar(){
PROC=$1
while [ -d /proc/$PROC ];do
   echo -n '=' ; sleep 0.05
done
return 0
}

statbar $(pidof “background command”)

實作的方法就是利用一個while-loop,一邊檢查程式的狀態,一邊輸出顯示進度的字元(=),直到程式執行結束。但是要怎麼檢查程式是否在執行呢? 原理就是執行中的程式一定會在**/proc中存在有一個以自己PID為名的目錄,所以只要檢查是否有它即可確定程式是否還在執行。至於要如何取得PID呢? 使用pidof**命令即可。

[系列文章]

我與BASH的每一天 - [1]利用bc命令來取得數字字串中的特定欄位值
我與BASH的每一天 - [2]直取字串變數中的特定欄位值
我與BASH的每一天 - [3] 利用awk來擷取特定欄位
我與BASH的每一天 - [4] 利用awk來擷取特定欄位-2
我與BASH的每一天 - [5] 利用awk來擷取特定欄位-3
我與BASH的每一天 - [6] 利用cut來擷取特定欄位
我與BASH的每一天 - [7] grep指令的妙用 - 1
我與BASH的每一天 - [8] grep指令的妙用 - 2
我與BASH的每一天 - [9] 正規化表示法 - 1
我與BASH的每一天 - [10] 正規化表示法 - 2
我與BASH的每一天 - [11] 正規化表示法 - 3
我與BASH的每一天 - [12] 正規化表示法 - 4
我與BASH的每一天 - [13] sed - 1
我與BASH的每一天 - [14] sed - 2
我與BASH的每一天 - [15] sed - 3
我與BASH的每一天 - [16] 多條件選擇 - case
我與BASH的每一天 - [17] 建立自動化的暫存檔 - mktemp
我與BASH的每一天 - [18] if 條件判斷的正規化用法
我與BASH的每一天 - [19] 複合式的條件判斷
我與BASH的每一天 - [20] 代表參數位置的特殊變數符號與shift
我與BASH的每一天 - [21] 特殊的參數變數符號: $@ 與 $*
我與BASH的每一天 - [22] while-loop與array的結合


上一篇
我與BASH的每一天 - [22] while-loop與array的結合
下一篇
我與BASH的每一天 - [24] 打包initrd image
系列文
我與BASH shell scripting的每一天31

尚未有邦友留言

立即登入留言