# How to Tell if a Variable has an Integer Value

```v=10

if expr \${v} + 1 >/dev/null 2>&1; then
#
# the value contained by v is an integer
#
else
#
# the value contained by v is NOT an integer
#
fi
```
More details:
expr

# Integral Number Operations

## \$((...))

```op1=4
op2=2
echo \$((op1 + op2))
echo \$((op1 - op2))
echo \$((op1 * op2))
echo \$((op1 / op2)) # integral division
```

displays:

```6
2
8
2
```

expr

## bc

```local t0="\$(date -u +%s)"
local t1="\$(date -u +%s)"
local delta="\$(bc <<<"\${t1}-\${t0}")"
```

# Floating Point Operations

Multiplication:

```local operand1=10.1
local operand2=20.2

result=\$(echo \${operand1} \${operand2} | awk '{printf "%5.1f\n",\$1*\$2}') || exit 1
result=\$(echo \${operand1} \${operand2} | awk '{printf "%.1f\n",\$1*\$2}') || exit 1
```

Division:

```local operand1=10.1
local operand2=20.2

result=\$(echo \${operand1} \${operand2} | awk '{printf "%5.1f\n",\$1/\$2}') || exit 1
```

# Increment an Integer

Increment an Integer with ((...)) Operator

# Decrement an Integer

Decrement an Integer with ((...)) Operator

# Numeric Evaluation in a Condition

```a=1
b=2
if [[ \$(expr \${a} - \${b}) < 0 ]]; then
...
fi
```

# Random Numbers

Bash script that generates a random MAC address