【シェルスクリプト】シェル上で進捗状況を表示
繰り返しの処理をしていく中で、今の進捗状況が見れるといいなと思い、それについて調査。
主にこちらのサイトを参考にさせてもらった。
全ては時の中に… : 【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)" # これがないと表示が消えてしまうので、最後に改行を含めて書き込む