ふとしたときに思い出せないのでメモ。
ソース
#!/bin/bash
C=30
A=0
while [ $A -le $C ]
do
B=""
for i in `seq 1 $C`
do
if [ $A -eq $i ]
then
B="$B>"
else
if [ $i -le $A ]
then
B="$B-"
else
B="$B "
fi
fi
done
P=`expr $A \* 100 / $C`
echo -en " copying... [$B] $P %\r"
sleep 1
A=`expr $A + 1`
done
ちょっと解説
ポイントはechoの部分。
-e オプションでエスケープコードを有効に
-n オプションで改行を抑制
\r でカーソルを行頭に移動して、次の文字列を出力する
と、同じ行でどんどん上書きされていく仕組み。echo -e " copying... [$B] $P %\r\c"
と、-nオプションの代わりに\cコードでもいけると思います(たぶん)。
ちなみに、\rでいけるんだったら\nでもいけるんちゃうか、と思ってしまいますが改行されてしまいうまくいきません。\r(CR)と\n(LF)の意味合いの違いにあると思います。詳しくは別途かき・・・たいです。
また、-nオプションつけてても、文字列として改行を記載するとそこは有効になってしまいます。あくまでもechoコマンドとしての改行抑制オプションが-n、というところでしょうか。