mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 19:29:44 +08:00
Created SC2084 (markdown)
43
SC2084.md
Normal file
43
SC2084.md
Normal file
@@ -0,0 +1,43 @@
|
||||
## 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.
|
Reference in New Issue
Block a user