bashне може обробити не цілу арифметику. Це дасть правильний результат, якщо всі вирази є цілими числами. Тому вам потрібно уникати отримання нецілого значення десь у вашому розрахунку.
У вашому випадку, коли ви оцінюєте 1 / 5, і 2 / 5т.д. , що створює ціле число нульових значень в БАШЕЄВ correspondings деяких нецілих значень і результати виходять рівний нуль відповідно. Пріоритет ділення та множення - це одне і те ж і те саме оператори прецеденту завжди виконуються зліва направо, оскільки вони розміщені у виразі.
Однією з задач буде спочатку зробити множення, а потім ділення, щоб bash ніколи не повинен обробляти не ціле значення. Виправлений вираз буде,
$ max=5; for e in $(seq 1 1 $max); do percent=$(( $e*100/$max )); 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