shuzo-kino.hateblo.jp
の派生です。
実際のところ
以前はプログレスバーの文字列はyesコマンドを中心としたパイプ処理にて行いました。
今回は、より泥臭く変数代入でやってみます。
#!/bin/sh for i in `seq 20 20 100` do COUNT=$i STR="${STR}##" printf "%-10s(%3d%%)\r" $STR $COUNT sleep 1 done printf "%20s\r" printf "Finish!!\r" sleep 1
これを以前の記事と同様yesコマンドやsedをつかった実装にすると、こんな感じ
#!/bin/sh function bar () { printf "%-10s(%3s%%)\r" $1 $2 } for i in `seq 20 20 100` do COUNT=$i VAR=`expr $i / 10` STR=`yes "#" | head -$VAR | tr -d "\r\n"` bar $STR $COUNT sleep 1 done printf "%20s\r" printf "Finish!!\r" sleep 1
性能比較
速度を比較すると……やる事が複雑化しているのでyes版のほうが少し遅くなります。
メンテナンス性
$ time hoge_directtype.sh Finish!! real 0m6.161s user 0m0.070s sys 0m0.098s $ time hoge_yestype.sh Finish!! real 0m6.081s user 0m0.015s sys 0m0.032s