【问题标题】:Bash indirect variable referencingBash 间接变量引用
【发布时间】:2017-01-09 17:11:01
【问题描述】:
foo='abc'
bar='xyz'
var=bar

当我拥有var 时,如何访问'xyz'

我试过了:

$(echo $var)

$(eval echo $var)

我刚收到bar: command not found

【问题讨论】:

    标签: bash variables reference


    【解决方案1】:

    使用bash间接变量引用:

    ${!var}
    

    当然也可以用eval完成,不推荐:

    eval 'echo $'"$var"
    

    原因:

    $ bar=xyz
    
    $ var='bar;whoami'
    
    $ eval 'echo $'"$var"
    xyz
    spamegg
    

    whoami 的命令也正在被 eval 评估作为评估的一部分,想象一个破坏性命令而不是 whoami


    示例:

    $ bar='xyz'
    
    $ var=bar
    
    $ echo "${!var}"
    xyz
    
    $ eval 'echo $'"$var"
    xyz
    

    【讨论】:

    • 不错。但如果你可以说明为什么不推荐eval,那可能会让这更优雅。 :) ++
    • 另外,正确的术语应该是[ indirect reference ],因为引用可能意味着直接和间接引用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    相关资源
    最近更新 更多