Arithmetic
- Using
((
))
:
n=123
(( n+=1 ))
echo $n
#n=124
And also echo $(( n+1 ))
This construct can also be used to force a base, or trim leading zeroes:
- $((10#0000123))
returns 123
. Without 10#
a number with leading zeroes
could be interpreted as octal.
- Using
let
:
n=123
let n+=1
echo $n
#n=124
NOTE about let
If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." ['help let']
So a better alternative for scripts with set -e
is to use (( ))
.
Otherwise let will just stop running the script silently!!!
let var=0
# $? = 1
let var++
# $? = 1
let var=1
# $? = 1
let var=2
# $? = 0
let var++
# $? = 0