【问题标题】:In bash, is it possible to assign values to variables named as array members? [duplicate]在 bash 中,是否可以为命名为数组成员的变量赋值? [复制]
【发布时间】:2021-09-15 04:34:16
【问题描述】:
# 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

答案应该是“你好”

【问题讨论】:

    标签: bash substitution


    【解决方案1】:

    declare -n 使一个变量成为对另一个变量的引用。如果我们执行declare -n foo=bar,那么$foo 的计算结果为$bar,并且更改$foo 会更改$bar

    您可以使用它来设置ref=domain_name,之后分配给$ref 将更新$domain_name

    $ declare -a vars=("domain_name" "port" "username")
    $ declare -n ref=${vars[0]}
    $ ref=hello
    $ echo $domain_name
    hello
    

    您还可以使用它来更新数组项。如果我们改为设置ref=vars[0],看看区别:

    $ 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")
    

    【讨论】:

    • 我没有足够的声誉来支持您非常有用的答案,但这很棒!谢谢!
    猜你喜欢
    • 2011-09-06
    • 2018-01-13
    • 2020-12-29
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2022-12-04
    • 2020-10-12
    • 1970-01-01
    相关资源
    最近更新 更多