tdrk's diary

とある情報系大学生。主には自分のための備忘録...になる予定

【シェルスクリプト】シェル上で進捗状況を表示

繰り返しの処理をしていく中で、今の進捗状況が見れるといいなと思い、それについて調査。
主にこちらのサイトを参考にさせてもらった。
全ては時の中に… : 【Linux】シェルで進捗を表示する

echoにおける表示の時に改行をせずに、同じ行の先頭から再描画するように書けばよい。

  • "\c" : 改行を抑制
  • "\r" : 行の先頭にフォーカスを移す

これら2つを組み合わせることで、徐々に変化する進捗の表示ができる。

以下、スクリプト例。

#!/bin/sh

COUNT=1                             # 今の実行回数を表す変数
MAX=5                               # 実行回数の最大値を表す変数
while [ $COUNT -ne $MAX ]
do
    echo "進度: ($COUNT/$MAX)\c"    # 改行を抑制しながら進捗状況を表示
    sleep 2                         # 2秒間停止
    COUNT=`expr $COUNT + 1`
    echo "\r\c"                     # 行頭にフォーカスを移す
done
echo "進度: ($MAX/$MAX)"            # これがないと表示が消えてしまうので、最後に改行を含めて書き込む

プログレスバー形式のスクリプトもつくりたいがこれは後日に...