The dispProgBar function takes 2 arguments, current progress and total progress number. In this example it starts with 1 until 10000. 
dispProgBar will then calculate percentage of progress and current bar length.
1st loop will draw current progress bar with a dark block (ASCII 219).
2nd loop will draw remaining progress bar with a light graphic character (ASCII 176).
At the end of the progress bar it will send "\r" to go back to the beginning of the line without printing a newline.
#!/bin/bash
function dispProgBar(){
	curProg=$1
	totalProg=$2
	barFullLen=50
	((perc = $curProg * 100 / $totalProg))
	((barLen = $curProg * $barFullLen / $totalProg))
	printf "%3s%% [" $perc
	for (( c=1; c<=$barLen; c++ )); do
		echo -ne "█"
	done
	for (( c=$barLen; c<$barFullLen; c++ )); do
		echo -ne "░"
	done
	echo -en "]\r"
	if [ $curProg -ge $totalProg ]; then
		echo ""
	fi
}
for i in {1..10000}
do
	dispProgBar $i 10000
done

No comments:
Post a Comment