How can I increment a value in a bash script array by 1?

18,273

Try this

 myArr[3]=7
 (( myArr[3]++ ))
 echo ${myArr[3]}

 # output
 8

The (( .... )) can perform bash/ksh's math operations, and the variables referenced inside, don't need to be passed out as in your example, you're probably thinking of a similar construct var=$(( ... MathStuff ...)) OR var=$( ... stringStuff ... ) (note the '$' before the opening paren).

Also note that inside (( ... )) you don't need to use the leading '$' for any math variables like $pct or $counter. If you're using arguments to the script or a function like $1, $2, ... $N, THEN you need to use the $, so the value of $1 is used, instead of just '1'. Thanks to @ChrisDown for the reminder!

I hope this helps.

Share:
18,273
Admin
Author by

Admin

Updated on June 14, 2022

Comments

  • Admin
    Admin almost 2 years

    I'm trying to increment a value in an array by 1 using the following code, however I'm having some problems with it. Please can someone help me out?

    myArray[$position]=((${myArray[$position]}++))
    
  • Chris Down
    Chris Down over 12 years
    Not true, there are some times where you will have to refer to them with a leading $ to force the context ($1, $2 ... $N).
  • shellter
    shellter over 12 years
    Great, that would certainly affect someones results. I'll update when I get back. Thanks for the improvement!
  • l0b0
    l0b0 about 11 years
    Note that the exit status will be non-zero if myArr[3] is 0 before updating.
  • l0b0
    l0b0 about 11 years
    You can also use let myArr[3]++.