Created SC3039 (markdown)

Vidar Holen
2020-09-01 17:52:05 -07:00
parent a3084ae94f
commit 2f1d10ba5d

35
SC3039.md Normal file

@@ -0,0 +1,35 @@
## In POSIX sh, 'let' is undefined.
(or "In dash, ... is not supported." when using `dash`)
### Problematic code:
```sh
#!/bin/sh
let x=2+2
```
### Correct code:
Use standard `$((arithmetic expansion))` instead of legacy `let`:
```sh
#!/bin/sh
x=$((2+2))
```
### Rationale:
`let` is a command used for arithmetic in some shells, but it's not a standard command. Use `$((..))` instead.
### Exceptions:
If you only intend to target shells that supports this feature, you can change
the shebang to a shell that guarantees support, or [[ignore]] this warning.
You can use `# shellcheck disable=SC3000-SC4000` to ignore all such compatibility
warnings.
### Related resources:
* Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!