Simple progress bar in ksh

September 7, 2008

#!/usr/bin/ksh

tail -f /ms/user/s/shettkus/bcp.C18.LedgerJournal.log | {
while read myline; do
lines_read=`echo $myline| cut -d ” ” -f 1`
expr $lines_read + 0 > /dev/null 2>&1
if [ $? -eq 0 ]
then
done=1.0;
done=`echo $done*100*$lines_read/108406239 | bc -l`
#done=$(($done*100))
int_done=$((100*$lines_read/108406239))
i=1
printf “|”
while [[ $i -le $int_done ]]
do
printf “#”
i=$(($i+1))
done
i=$(($int_done+1))
while [[ $i -le 100 ]]
do
printf ” “
i=$(($i+1))
done
printf “| “
printf “%.4f%%” $done
if [[ $int_done -eq 100 ]]
then
printf “\n”
exit
fi
printf “\b\b\b\b\b\b\b\b\b”
i=100
while [[ $i -ge 0 ]]
do
printf “\b”
i=$(($i-1))
done
printf “\b”
fi
done }