mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 11:19:45 +08:00
Created SC2034 (markdown)
40
SC2034.md
Normal file
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.
|
Reference in New Issue
Block a user