重い処理を書いてる時に唐突にプログレスバーを付けたくなった。
なんかシンプルないいやつないかなーって思ってみたらあった。

 Bash で動作するプログレスバー

なるほど。とりあえずつかってみたがいい感じ。だけど
    PROGRESS=$(echo | awk -v t=$TIMES -v c=$COUNT -v max=$MAX '{ print int(c / t * max) }')
この部分のawkの部分が1以上ないと良からぬことが起きるので、MINを0にした。
 
[user@test check]$ diff -uBB bash-progress-bar-master/progress-bar bash-progress-bar/
--- bash-progress-bar-master/progress-bar	2014-05-20 00:04:39.000000000 +0900
+++ bash-progress-bar/progress-bar	2014-12-10 15:47:38.000000000 +0900
@@ -1,7 +1,7 @@
 #!/bin/bash

 BAR="#"
-MIN=1
+MIN=0
 MAX=100

 progress_bar() {
@@ -12,7 +12,7 @@
     PROGRESS_BAR=""
     for _i in $(seq $MIN $PROGRESS); do PROGRESS_BAR="${PROGRESS_BAR}${BAR}"; done

-    printf "\r[%-100s] %3d%%" $PROGRESS_BAR $PROGRESS
+    printf "\r[%-100s] %3d%%(%d/%d)" $PROGRESS_BAR $PROGRESS $COUNT $TIMES
 }

 byte() {
[user@test check]$
下の部分は処理に時間がかかる場合0%が続くので、動いてるかどうかわからなくて何件処理中かってのを入れるようにしました。気分で。

 

Add Comments

名前
URL
 
  絵文字
 
 
livedoor プロフィール
Twitter
instagram(SnapWidget)
タグクラウド
  • ライブドアブログ