Created SC2100 (markdown)

Vidar Holen
2018-06-28 11:35:27 -07:00
parent 24b48dec5c
commit 03b38d5f91

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!