Bash не очень хорошо справляется с такой арифметикой ... Вот ваша проблема:
$ echo $((1/5))
0
$ echo $((2/5))
0
$ echo $((4/5))
0
$ echo $((4/5))
0
Если вам нужно обрабатывать нецелые значения, вы можете использовать bc
$ max=5; for e in $(seq 1 1 "$max"); do percent=$(bc <<< "scale=1 ; $e/$max*100") ; echo "echo $e / $max : = ${percent%.*}"; done
echo 1 / 5 : = 20
echo 2 / 5 : = 40
echo 3 / 5 : = 60
echo 4 / 5 : = 80
echo 5 / 5 : = 100
(благодаря @Arronical для указания того, как форматировать вывод как целые числа)