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?

4

5 Answers

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++)) 
2

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: .

2

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) 

These are the methods I know:

ichramm@NOTPARALLEL ~$ i=10; echo $i; 10 ichramm@NOTPARALLEL ~$ ((i+=1)); echo $i; 11 ichramm@NOTPARALLEL ~$ ((i=i+1)); echo $i; 12 ichramm@NOTPARALLEL ~$ i=`expr $i + 1`; echo $i; 13 

Note the spaces in the last example, also note that's the only one that uses $i.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy