Category Archives: 1-2.繰り返し

コンソールプログレスバー

アニメ『デス・パレード
クイーンデキムというバーで、自分が亡くなった事を忘れている人たちが命を賭けてゲームをします。天国と地獄の選択ではなく 魂が再生するか消滅するか。再生が天国に当たるのか、地獄に当たるのかは感じ方は人それぞれでしょうけど、バーへやって来る人たちは、ゲームを終える頃には皆記憶を取り戻して感動が訪れます。

今回はバーを表示します。バーはバーでもプログレスバーですが。
引数に0〜20を指定することで、プログレスバー(*と_の組み合わせ)が表示できる関数仕様とします。関数名はpbにしました。progress barの略です。

~$ pb(){
> for i in `seq $1`;do echo -n '*';done
> for i in `seq $1 19`;do echo -n '_';done
}

では使ってみましょう。作成したpb関数は改行をしないので、改行するためのechoコマンドも合わせて実行します。

~$ pb 0;echo
____________________
~$ pb 5;echo
*****_______________
~$ pb 10;echo
**********__________
~$ pb 19;echo
*******************_
~$ pb 20;echo
********************
~$ 

これを連続して呼び出すと動いてるように見えます。1秒毎にpbを呼び出してみます。

~$ for i in `seq 20`;do clear;pb $i;sleep 1;done

progress-test

エスケープシーケンスを使って、表示位置を変更して、色もつけるとプログレスバーらしくなります。

~$for i in `seq 20`;do clear;echo -ne '\x1b[7;20H';pb $i | sed 's/\*/\x1b[44m \x1b[49m/g;s/_/\x1b[43m \x1b[49m/g';sleep 1;done

progress-color