# Beginners Guide to Arithmetic Operations on Bourne Shell Variables

The Bourne shell assigns string values to variables only in the assignment statement. The Bourne shell has no built-in ability to perform arithmetic. The external statement, expr, treat the variables as numbers and performs the arithmetic operation.

**NOTE:**The expr statement is space-sensitive and expects each operand and operator to be separated by white spaces.

The expr statement recognizes the operators shown in the table below.

Operator Operation Example
+ Addition num2=`expr “\$num1” + 25`
- Subtraction num3=`expr “\$num1” - “\$num2”`
* Multiplication num3=`expr “\$num1” \* “\$num2”`
/ Division num4=`expr “\$num2” / “\$num1”`
% Integer remainder num5=`expr “\$num1” % 3`

**NOTE:**Precede a multiplication operator with a backslash because it is a shell metacharacter.

The Bourne shell has no built-in arithmetic capability.

``````\$ num1=5
\$ echo \$num1
5
\$ num2=\$num1+10
\$ echo \$num2
5+10
``````

The expr statement must have white space around operators and operands. The expr statement automatically sends the value to standard output:

``````\$ echo \$num1
5
\$ expr \$num1 + 7
12
\$ expr \$num1+7
5+7
\$ echo \$num1
5
``````

The following shows the need for properly quoting the multiplication operator.

``````\$ expr \$num1 * 2
expr: syntax error
\$ expr "\$num1 * 2"
5 * 2
\$ expr \$num1 \* 2
10
``````

When performing arithmetic, an operation result is stored in a variable. This is accomplished in the Bourne shell by placing the expr statement on the right side of a variable assignment statement:

``````\$ echo \$num1
5
\$ num2=‘expr \$num1 + 25‘
\$ echo \$num2
30
\$ num3=‘expr \$num1 + \$num2‘
\$ echo \$num3
35
\$ num4=‘expr \$num1 \* \$num2‘
\$ echo \$num4
150
\$ num5=‘expr \$num2 / \$num1‘
\$ echo \$num5
6
\$ num6=‘expr \$num1 % 3‘
\$ echo \$num6
2
``````

## Arithmetic Precedence

• Expressions (operations) within parentheses are evaluated first. Use a single pair of parentheses around an expression to force it to be evaluated first.
• Multiplication (*) and division (% and /) have greater precedence than addition (+) and subtraction (-).
• Arithmetic expressions are evaluated from left to right.
• When there is the slightest doubt, use parentheses to force the evaluation order.