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