41

I was wondering, is it possible to do simple maths in bash? I'm thinking something like, =25-5 would print out 20 or something.

Can this be done easily?

Thank you

1

7 Answers 7

28

Just type bc into the terminal. Then type all the math stuff in after that.

bc stands for "basic calculator"

Then type quit and enter to exit.

3
  • 2
    Just for clarity it would be like that : echo 25-5 | bc May 13, 2016 at 9:17
  • For some math problems, you may need to wrap it in quotes, such as echo '0.6 * 12' | bc
    – Goose
    Jan 26, 2017 at 17:09
  • 1
    you might also need to add scale to get floating point precision working i.e. echo "scale=2;557/3672" | bc
    – CpILL
    Oct 29, 2019 at 23:21
77

If we are really talking about Bash, not Bourne Shell (sh) or other shells, it's easy.

Bash can compute basic expressions with $((expression)) and here's an example on how you might like to use it:

 a=3
 b=4
 c=$((7*a+b))
 echo $c

or for interactive use, just

 echo $((7*3+4))
4
  • It does seem to be proper bash, since that works. I am ssh-ing into one of my universities clusters
    – Kurru
    Mar 11, 2011 at 0:59
  • 4
    The $((expression)) syntax is part of the POSIX sh standard, and derived from ksh.
    – geekosaur
    Mar 11, 2011 at 1:05
  • 7
    Bash can only do integer arithmetic. It cannot do floating point arithmetic like ksh93 or zsh
    – fpmurphy
    Mar 11, 2011 at 2:27
  • 4
    This should've been the accepted answer. Sep 30, 2017 at 12:03
12

There are a number of command-line utilities for doing simple calculations:

$ expr 100 \* 4
400

$ echo '100 * 4' | bc
400

to name just two of them. Be careful doing multiplication as if you don't escape your * the shell may try and interpret it as a wildcard.

11

Another is AWK:

awk 'BEGIN {print 4 + 3 / 12}'
9

Well your question is answered, but consider this:

Most of the linux distros have python preinstalled, so why not use it?

Just type

python

in the terminal and then do all the arithmetic you want, like

2+2

Will output 4 :)

You can also do this directly from terminal with the -c python argument.

python -c 'print 2+2'
3
  • 1
    On my computer, typing python takes nearly two seconds to start. Rather annoying if you just want to do something simple like 2+2. Mar 11, 2011 at 7:14
  • use python3 if you don't want float rounding. e.g. 2 / 30 (python: 0) (python3: 0.06666666666666667)
    – hrvoj3e
    Aug 28, 2018 at 11:52
  • and if you only have python3 installed, but want rounding, use 2//30 or int(2/30)
    – mazunki
    Sep 8, 2019 at 16:32
3

Or Ruby. :)

Although it may not come pre-installed, it is pretty quick.

Type irb, then 2+2.

Or just ruby -e 'p 2+2'

3

Perl is another option:

perl -E 'say 1/7'

outputs

0.142857142857143

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .