mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 11:19:45 +08:00
describe workaround to local variable confusion
31
SC2178.md
31
SC2178.md
@@ -39,3 +39,34 @@ Another possible cause is accidentally missing the `$` on a previous assignment:
|
||||
### Exceptions:
|
||||
|
||||
ShellCheck can get confused by variable scope if the same variable name was used as an array previously, but is a string in the current context. You can [[ignore]] it in this case.
|
||||
|
||||
In the case of local variables, a workaround is to declare the local variable separately from assigning to it:
|
||||
|
||||
**Problematic Code:**
|
||||
```sh
|
||||
foo () {
|
||||
local -a baz
|
||||
baz+=("foo" "bar")
|
||||
echo "${baz[@]}"
|
||||
}
|
||||
|
||||
bar () {
|
||||
local baz="qux"
|
||||
echo "$baz"
|
||||
}
|
||||
```
|
||||
|
||||
**Correct Code:**
|
||||
```sh
|
||||
foo () {
|
||||
local -a baz
|
||||
baz+=("foo" "bar")
|
||||
echo "${baz[@]}"
|
||||
}
|
||||
|
||||
bar () {
|
||||
local baz
|
||||
baz="qux"
|
||||
echo "$baz"
|
||||
}
|
||||
```
|
Reference in New Issue
Block a user