# Doing match calculations in BASH with bc

`bc`

is a tool that allows to do inline calculations in bash cli.
Eventually `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 `bc`

usage:

### 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
```

### Rounding result

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 `last`

```
echo '2 + 2;. * 2' |bc
```

**Getting the square root and exponentiation**

`sqrt`

returns square root. You can use scale for floats `scale`

```
echo 'sqrt(16)' | bc
```

It is rather strange that a tool written in C does not have the use of `sqr`

.

**Exponentiation example**

```
echo '4^2' | bc
```

### Trigonometric functions

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.