Грязный хак для малых значений и ограниченной точности без использования bc был бы, чтобы умножить знаменатель перед делением, чтобы получить точный результат.
Пример без точности:
echo $((13/7))
1
и с точностью до 2 цифр: умножьте на 100 и сдвиньте десятичную точку на 2 шага влево:
echo $((100*13/7)) | sed 's/..$/.&/'
1.85
echo $((100*13/7))%
185%
Это полезно только в том случае, если диапазон чисел известен ранее, а точность всегда одинакова. Избегать вызова bc и вызывать sed кажется не очень разумным.
Обратите внимание, что умножение значений может привести к ошибкам переполнения, но не очень рано:
echo $((1000000000*12345678901))
-6101065172709551616