mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 19:29:44 +08:00
Created SC2082 (markdown)
24
SC2082.md
Normal file
24
SC2082.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
## To expand via indirection, use name="foo$n"; echo "${!name}".
|
||||||
|
|
||||||
|
### Problematic code:
|
||||||
|
|
||||||
|
var_1="hello world"
|
||||||
|
n=1
|
||||||
|
echo "${var_$n}"
|
||||||
|
|
||||||
|
### Correct code:
|
||||||
|
|
||||||
|
var_1="hello world"
|
||||||
|
n=1
|
||||||
|
name="var_$n"
|
||||||
|
echo "${!name}"
|
||||||
|
|
||||||
|
### Rationale:
|
||||||
|
|
||||||
|
You can expand a variable `var_1` with `${var_1}`, but you can not generate the string `var_1` with an embedded expansion, like `var_$n`. Instead, you have to use an indirect reference.
|
||||||
|
|
||||||
|
You can do this by creating a variable containing the variable name you want, e.g. `myvar="var_$n"` and then expanding it indirectly with `${!myvar}`. This will give the contents of the variable `var_1`.
|
||||||
|
|
||||||
|
### Exceptions:
|
||||||
|
|
||||||
|
None
|
Reference in New Issue
Block a user