Have you ever wanted to “just do some math” without much fuss? I noticed a while ago (but haven’t really used it since) that bash (born again shell) has, amongst many other evaluations, an arithmetic one. Using the syntax `$((expression))`

you can evaluate the expression to arithmetically. Operations allowed are quite a few. From `man bash`

:

ARITHMETIC EVALUATION

The shell allows arithmetic expressions to be evaluated, under certain circumstances (see the let and declare builtin commands and Arithmetic Expansion). Evaluation is done in fixed-width integers with no check for overflow, though division by 0 is trapped and flagged as an error. The operators and their precedence, asso ciativity, and values are the same as in the C language. The following list of operators is grouped into levels of equal-precedence operators. The levels are listed in order of decreasing precedence.id++ id-- variable post-increment and post-decrement ++id --id variable pre-increment and pre-decrement - + unary minus and plus ! ~ logical and bitwise negation ** exponentiation * / % multiplication, division, remainder + - addition, subtraction <> left and right bitwise shifts = comparison == != equality and inequality & bitwise AND ^ bitwise exclusive OR | bitwise OR && logical AND || logical OR expr?expr:expr conditional operator = *= /= %= += -= <>= &= ^= |= assignment expr1 , expr2 commaShell variables are allowed as operands; parameter expansion is performed before the expression is evaluated. Within an expression, shell variables may also be referenced by name without using the parameter expansion syntax. A shell variable that is null or unset evaluates to 0 when referenced by name without using the parameter expansion syntax. The value of a variable is evaluated as an arithmetic expression when it is ref erenced, or when a variable which has been given the integer attribute using declare -i is assigned a value. A null value evaluates to 0. A shell variable need not have its integer attribute turned on to be used in an expression.

Constants with a leading 0 are interpreted as octal numbers. A leading 0x or 0X denotes hexadecimal. Other wise, numbers take the form [base#]n, where base is a decimal number between 2 and 64 representing the arith metic base, and n is a number in that base. If base# is omitted, then base 10 is used. The digits greater than 9 are represented by the lowercase letters, the uppercase letters, @, and _, in that order. If base is less than or equal to 36, lowercase and uppercase letters may be used interchangeably to represent numbers between 10 and 35.

## linux vps said,

Monday, 5th Aug 2013 at 12:51

Howdy this is kinda of off topic but I was wanting to know if blogs use WYSIWYG editors or if you have to manually code with HTML. I’m starting a blog soon but have no coding knowledge so I wanted to get advice from someone with experience. Any help would be enormously appreciated!|

## www said,

Wednesday, 3rd Oct 2012 at 15:41

katappe, change $(($variable*5)) to something like $((($variable)*5)). you should provide extra () so that the results of the variable is multiplied by 5. not sure if $ should be inside, but it’s something like that

## ktappe said,

Monday, 23rd Apr 2012 at 20:21

Not very useful unless you show the syntax needed to multiply variables. For example, echo $((2*5)) works, but echo $(($variable*5)) doesn’t, nor does echo $((variable*5)). Without this info, what possible use is this tutorial? Who would ever script the multiplication of constants??

## Just-an-example said,

Tuesday, 10th Apr 2012 at 15:39

Here a small example: echo $((1+1))

## Brian said,

Friday, 6th Apr 2012 at 20:59

This tutorial blows. Good job giving an example. What do I type into the command line to do 1+1?

## sebas said,

Monday, 2nd Apr 2012 at 03:45

Bash doesn’t accept calculations with decimals, but zsh does

To avoid to have to always type $(()) we can put an alias in ~/.bashrc (ou .zshrc)

alias calc=’echo -n \> ; read X_CALC ; echo $(($X_CALC))’

Another solution is to put in ~/.bashrc (ou .zshrc)

calcc(){ awk “BEGIN{ print $* }” ;}

# usage : calcc 2^(3+2 ) or “2**(3+2)” (we must escape * and **)

## A. L. said,

Friday, 23rd Dec 2011 at 18:22

Thanks for the tutorial! It came up as one of the first few links when I searched Google for ‘bash shell math’, and it was exactly what I needed!

## Ukrainian lyrics said,

Saturday, 10th Dec 2011 at 22:20

nice tutorial!