There are multiple ways to solve "Invalid Arithmetic Operator" error when trying to do floating-point math in bash. Often the errors are caused by using the wrong syntax for performing floating-point calculations.

Note:

Note that bash does not support floating-point arithmetic operations. We need to use an external utility like bc.

bc command

In bash, we can use the bc command to perform floating-point math. For example:

echo "4.2 + 1.2" | bc

result into:

5.4

-l option

We can use the -l option to enable math functions and other advanced features:

echo "sqrt(3)" | bc -l

THe output of this command is:

1.73205080756887729352

Without the option '-l' we will get result: 1

Float precision

In in order to specify the precision we can use scale:

a=10
b=3
echo "scale=2 ; $a / $b" | bc

The result will have two decimal places:

3.33
Note:

bc is a calculator(terminal based) bundled with most distributions

Float calculation to variable

To assign the result of a floating-point calculation to a variable, you can use the $(()) operator, like this:

a=$(echo "4.2 + 1.2" | bc)

syntax error: invalid arithmetic operator

The error can be reproduced by the following bash script:

a=4.2
b=1.2
ab=$((a + b))

Which raise an error:

bash: 4.2: syntax error: invalid arithmetic operator (error token is ".2")

awk to calculate floating numbers

As alternative solution for floating-point math in Bash we can use command awk:

a=4.2
b=1.2
echo "$a $b" | awk '{print $1 - $2}'

result is:

3