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