0
# 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"

John Kugelman
  • 349,597
  • 67
  • 533
  • 578
analytical
  • 25
  • 2

1 Answers1

1

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")
John Kugelman
  • 349,597
  • 67
  • 533
  • 578