Skip to content
Vidar Holen edited this page Jun 28, 2018 · 1 revision

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

Problematic code:

i=3
i=i 2

Correct code:

i=3
i=$((i   2))

Rationale:

Unlike most languages, variable assignments (almost) always assigns strings and not expressions. In the example code, i will become the string i 2 instead of the intended 5.

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

Exceptions:

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

description="friendly-looking"

ShellCheck (as of v0.5) doesn't recognize Bash/Ksh numeric variables created with declare -i where this syntax is valid. Using $((..)) still works, but you can also ignore this warning.

Related resources:

  • Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!

ShellCheck

Each individual ShellCheck warning has its own wiki page like SC1000. Use GitHub Wiki's "Pages" feature above to find a specific one, or see Checks.

Clone this wiki locally