# declare an array of variables
$ declare -a vars=("domain_name" "port" "username")
$ echo ${vars[0]}
domain_name
# Assign a value to it
$ let ${vars[0]}="hello"
# use the variable directly
$ echo $domain_name
5
Answer should be "hello"
# declare an array of variables
$ declare -a vars=("domain_name" "port" "username")
$ echo ${vars[0]}
domain_name
# Assign a value to it
$ let ${vars[0]}="hello"
# use the variable directly
$ echo $domain_name
5
Answer should be "hello"
declare -n
makes a variable a reference to another variable. If we do declare -n foo=bar
then $foo
evaluates to $bar
, and changing $foo
changes $bar
.
You can use this to set ref=domain_name
, after which assigning to $ref
will update $domain_name
:
$ declare -a vars=("domain_name" "port" "username")
$ declare -n ref=${vars[0]}
$ ref=hello
$ echo $domain_name
hello
You can also use it to update an array item. See the difference if we set ref=vars[0]
instead:
$ declare -a vars=("domain_name" "port" "username")
$ declare -n ref=vars[0]
$ ref=hello
$ declare -p vars
declare -a vars=([0]="hello" [1]="port" [2]="username")