-
Notifications
You must be signed in to change notification settings - Fork 1.8k
SC1067
Joachim Ansorg edited this page Nov 12, 2021
·
4 revisions
n=1
var$n="hello"
For integer indexing in ksh/bash, consider using an indexed array:
n=1
var[n]="hello"
echo "${var[n]}"
For string indexing in ksh/bash, use an associative array:
typeset -A var
n="greeting"
var[$n]="hello"
echo "${var[$n]}"
If you actually need a variable with the constructed name in bash, use declare
:
n="Foo"
declare "var$n=42"
echo "$varFoo"
For sh
, with single line contents, consider read
:
n="Foo"
read -r "var$n" << EOF
hello
EOF
echo "$varFoo"
or with careful escaping, eval
:
n=Foo
eval "var$n='hello'"
echo "$varFoo"
var$n=value
is not a valid way of assigning to a dynamically created variable name in any shell. Please use one of the other methods to assign to names via expanded strings. Wooledge BashFaq #6 has significantly more information on the subject.
None
- Wooledge BashFaq #6: How can I use variable variables (indirect variables, pointers, references) or associative arrays?