mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 19:29:44 +08:00
Created SC2100 (markdown)
33
SC2100.md
Normal file
33
SC2100.md
Normal file
@@ -0,0 +1,33 @@
|
||||
## Use `$((..))` for arithmetics, e.g. `i=$((i + 2))`
|
||||
|
||||
### Problematic code:
|
||||
|
||||
```sh
|
||||
i=3
|
||||
i=i+2
|
||||
```
|
||||
|
||||
### Correct code:
|
||||
|
||||
```sh
|
||||
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!
|
Reference in New Issue
Block a user