## Posted By

mrAlexGray on 04/10/11

# Counting Increment

/ Published in: Bash

`+=plus-equal (increment variable by a constant) let "var += 5" results in var being incremented by 5. -=minus-equal (decrement variable by a constant) *=times-equal (multiply variable by a constant) let "var *= 4" results in var being multiplied by 4. /=slash-equal (divide variable by a constant) %=mod-equal (remainder of dividing variable by a constant) Arithmetic operators often occur in an expr or let expression.   #!/bin/bash# Counting to 11 in 10 different ways. n=1; echo -n "\$n " let "n = \$n + 1"   # let "n = n + 1"  also works.echo -n "\$n "  : \$((n = \$n + 1))#  ":" necessary because otherwise Bash attempts#+ to interpret "\$((n = \$n + 1))" as a command.echo -n "\$n " (( n = n + 1 ))#  A simpler alternative to the method above.#  Thanks, David Lombard, for pointing this out.echo -n "\$n " n=\$((\$n + 1))echo -n "\$n " : \$[ n = \$n + 1 ]#  ":" necessary because otherwise Bash attempts#+ to interpret "\$[ n = \$n + 1 ]" as a command.#  Works even if "n" was initialized as a string.echo -n "\$n " n=\$[ \$n + 1 ]#  Works even if "n" was initialized as a string.#* Avoid this type of construct, since it is obsolete and nonportable.#  Thanks, Stephane Chazelas.echo -n "\$n " # Now for C-style increment operators.# Thanks, Frank Wang, for pointing this out. let "n++"          # let "++n"  also works.echo -n "\$n " (( n++ ))          # (( ++n ))  also works.echo -n "\$n " : \$(( n++ ))       # : \$(( ++n )) also works.echo -n "\$n " : \$[ n++ ]         # : \$[ ++n ] also worksecho -n "\$n " #!/bin/bash# Counting to 11 in 10 different ways. n=1; echo -n "\$n " let "n = \$n + 1"   # let "n = n + 1"  also works.echo -n "\$n "  : \$((n = \$n + 1))#  ":" necessary because otherwise Bash attempts#+ to interpret "\$((n = \$n + 1))" as a command.echo -n "\$n " (( n = n + 1 ))#  A simpler alternative to the method above.#  Thanks, David Lombard, for pointing this out.echo -n "\$n " n=\$((\$n + 1))echo -n "\$n " : \$[ n = \$n + 1 ]#  ":" necessary because otherwise Bash attempts#+ to interpret "\$[ n = \$n + 1 ]" as a command.#  Works even if "n" was initialized as a string.echo -n "\$n " n=\$[ \$n + 1 ]#  Works even if "n" was initialized as a string.#* Avoid this type of construct, since it is obsolete and nonportable.#  Thanks, Stephane Chazelas.echo -n "\$n " # Now for C-style increment operators.# Thanks, Frank Wang, for pointing this out. let "n++"          # let "++n"  also works.echo -n "\$n " (( n++ ))          # (( ++n ))  also works.echo -n "\$n " : \$(( n++ ))       # : \$(( ++n )) also works.echo -n "\$n " : \$[ n++ ]         # : \$[ ++n ] also worksecho -n "\$n " echo a=2147483646echo "a = \$a"        # a = 2147483646let "a+=1"           # Increment "a".echo "a = \$a"        # a = 2147483647let "a+=1"           # increment "a" again, past the limit.echo "a = \$a"        # a = -2147483648                     #      ERROR: out of range,                     # +    and the leftmost bit, the sign bit,                     # +    has been set, making the result negative. echo exit 0`