-
Notifications
You must be signed in to change notification settings - Fork 1.8k
SC2034
koalaman edited this page Feb 25, 2014
·
9 revisions
foo=42
echo "$FOO"
foo=42
echo "$foo"
Variables not used for anything are often associated with bugs, so ShellCheck warns about them.
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.