$((..))for arithmetics, e.g.
i=$((i + 2))
i=3 i=i + 2
i=3 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.