Increment variable value by 1 (shell programming)

I am a beginner in shell programming, and it sounds like a very stupid question but I can't seem to be able to increase the variable value by 1. I have looked at tutorialspoint's Unix / Linux Shell Programming tutorial but it only shows how to add together two variables.

I have tried the following methods but they don't work:

i=0

$i=$i+1 # doesn't work: command not found

echo "$i"

$i='expr $i+1' # doesn't work: command not found

echo "$i"

$i++ # doesn't work*, command not found

echo "$i"

How do I increment the value of a variable by 1??


You can use an arithmetic expansion like so:

i=$((i+1))

or declare i as an integer variable and use the += operator for incrementing its value.

declare -i i=0
i+=1

or use the (( construct.

((i++))

There are more than one way to increment a variable in bash, but what you tried is not correct.

You can use for example arithmetic expansion:

i=$((i+1))

or only:

((i=i+1))

or:

((i+=1))

or even:

((i++))

Or you can use let:

let "i=i+1"

or only:

let "i+=1"

or even:

let "i++"

See also: http://tldp.org/LDP/abs/html/dblparens.html.


The way to use expr:

i=0
i=`expr $i + 1`

the way to use i++

((i++)); echo $i;

Tested in gnu bash


you can use bc as it can also do floats

var=$(echo "1+2"|bc)