bc is a tool that allows to do inline calculations in bash cli.
bc can’t be used for complicated calculations.
The primary advantage of
bc is float support. In bash, you can do the usual operations (addition, subtraction, division, and multiplication) on integers but bc is indispensable when it comes to decimals.
Next you can find a number of examples of
Basic operations with bc
bc <<< 3-2 bc <<< 5*2 bc <<< 9/3
of cource you can use it with echo and pipe
echo ... |bc:
echo '3*2' |bc echo '3-2' |bc echo '3*2' |bc echo '3/2' |bc
bc respects the precedence of mathematical operations. Check this out:
echo '2 + 2 * 2' |bc
In the case of the division operation from the example
bc will return 1. In order to show the numbers after the decimal point, you need to specify how many of them you need using
scale (default = 0):
echo 'scale=1;3/2' |bc
You can use the file with the set of match operations
bc < FileName
Using result of last operation
echo '2 + 2;last * 2' |bc
You can use dot (.) instead of
echo '2 + 2;. * 2' |bc
Getting the square root and exponentiation
sqrt returns square root. You can use scale for floats
echo 'sqrt(16)' | bc
It is rather strange that a tool written in C does not have the use of
echo '4^2' | bc
I doubt that someone will use the cosine value or the natural logarithm of a number in scripts, but still:
- s (x) Sine x. x is given in radians.
- c (x) Cosine x. x is given in radians.
- l (x) Natural logarithm of x
Cerate variables from bc outputs
var1=$(echo 'sqrt(16)' | bc)
var2=$(bc <<< "2 + 2 * 2")
echo $var1 + $var2 |bc
In this article
bc is used to determine the size of the MySQL databases.