SC2099 – ShellCheck Wiki

See this page on GitHub


Use $((..)) for arithmetics, e.g. i=$((i + 2))

Problematic code:

i=i + 2

Correct code:

i=$((i + 2))


Unlike most languages, variable assignments in shell scripts are space sensitive and (almost) always assign strings.

To evaluate a mathematical expressions, use $((..)) as in the correct code:

i=$((i + 2))   # Spaces are fine inside $((...))

In the problematic code, i=i + 2 will give an error +: command not found because the expression is interpreted similar to something like LC_ALL=C wc -c instead of numerical addition:

 Prefix assignment    Command  Argument
 LC_ALL=C             wc       -c
 i=i                  +        2


If you wanted to assign a literal string, quote it:

game_score="0 - 2"

ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.