Created SC2082 (markdown)

koalaman
2015-05-13 11:50:47 -07:00
parent c42ed585fc
commit b17abf4415

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