Un truco sucio para valores pequeños y una precisión limitada sin usar bc sería, para multiplicar el nominador antes de la división, para obtener un resultado preciso.
Ejemplo sin precisión:
echo $((13/7))
1
y con precisión de 2 dígitos: multiplique por 100 y mueva el punto decimal 2 pasos hacia la izquierda:
echo $((100*13/7)) | sed 's/..$/.&/'
1.85
echo $((100*13/7))%
185%
Esto solo es útil si el rango de números se conoce antes, y la precisión es siempre la misma. Evitar llamar a bc y llamar a sed no parece muy razonable.
Tenga en cuenta que multiplicar los valores puede provocar errores de desbordamiento, pero no muy pronto:
echo $((1000000000*12345678901))
-6101065172709551616