Skip to content
Joachim Ansorg edited this page Nov 12, 2021 · 3 revisions

Remove $ or use _=$((expr)) to avoid executing output.

Problematic code:

i=4
$(( i++ ))

Correct code:

Bash, Ksh:

i=4
(( i++ ))

POSIX (assuming ++ is supported):

i=4
_=$(( i++ ))

Alternative POSIX version that does not preserve the exit code:

: $(( i++ ))

Rationale:

$((..)) expands to a number. If it's the only word on the line, the shell will try to execute this number as a command name:

$ i=4
$ $(( i++ ))
4: command not found
$ echo $i
5

To avoid trying to execute the number as a command name, use one of the methods mentioned:

$ i=4
$ _=$(( i++ ))
$ echo $i
5

Exceptions:

None.

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