$((..))
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.