33

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

23

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.

  • 2
    Just for clarity it would be like that : echo 25-5 | bc – Medhat Helmy May 13 '16 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 '17 at 17:09
  • you might also need to add scale to get floating point precision working i.e. echo "scale=2;557/3672" | bc – CpILL Oct 29 '19 at 23:21
66

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

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.

10

Another is AWK:

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

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'
  • On my computer, typing python takes nearly two seconds to start. Rather annoying if you just want to do something simple like 2+2. – ShreevatsaR Mar 11 '11 at 7:14
  • use python3 if you don't want float rounding. e.g. 2 / 30 (python: 0) (python3: 0.06666666666666667) – hrvoj3e Aug 28 '18 at 11:52
  • and if you only have python3 installed, but want rounding, use 2//30 or int(2/30) – mazunki Sep 8 '19 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'

0

Perl is another option:

perl -E 'say 1/7'

outputs

0.142857142857143

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.