Created SC2034 (markdown)

koalaman
2014-02-24 18:21:54 -08:00
parent 360f36357d
commit 90f03c8764

40
SC2034.md Normal file

@@ -0,0 +1,40 @@
# foo appears unused. Verify it or export it.
### Problematic code:
foo=42
echo "$FOO"
### Correct code:
foo=42
echo "$foo"
### Rationale:
Variables not used for anything are often associated with bugs, so ShellCheck warns about them.
### Contraindications
ShellCheck may not always realize that the variable is in use (especially with indirection), and may not realize you don't care (with throwaway variables or unimplemented features).
For throwaway variables, consider using `_` as a dummy:
read _ last _ zip _ _ <<< "$str"
echo "$last, $zip"
or use a directive to disable the warning:
# shellcheck disable=SC2034
read first last email zip lat lng <<< "$str"
echo "$last, $zip"
For indirection, there's not much you can do without rewriting to use arrays or similar:
bar=42 # will always appear unused
foo=bar
echo "${!foo}"
This is expected behavior, and not a bug. There is no good way to statically analyze indirection in shell scripts, just like static C analyzers have a hard time preventing segfaults.
As always, you can make an alias for `shellcheck -e SC2034` if you're frequently annoyed by this error.