koalaman / shellcheck Public
SC3039
Joachim Ansorg edited this page Nov 12, 2021
·
2 revisions
In POSIX sh, let is undefined.
(or "In dash, ... is not supported." when using dash)
Problematic code:
#!/bin/sh
let x=2+2Correct code:
Use standard $((arithmetic expansion)) instead of legacy let:
#!/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!