Mathematical expression in print command in Linux

495 Views Asked by At

I can't get my mistake in this command:

a=2
b=5
c=3
printf "%.2f\t" "'$a'+'$c'*'$b'" > ofile.txt

I am getting the value as 50.00. But I should get it 17.00.

How to do this when a, b, c are floating values? e.g. a=2.4, b=5.1 and c=3.2

2

There are 2 best solutions below

4
On BEST ANSWER

Your 2nd argument to printf is interpreted as the string '2', which has an ascii value of 50. If you want to do arithmetic, use arithmetic evaluation in bash:

printf "%.2f\t" "$((a+b*c))" > ofile.txt
0
On
printf "%.2f\t" "$(($a+$b*$c))" > yourname.txt