【问题标题】:Evaluate variable value from string dynamically动态评估字符串中的变量值
【发布时间】:2016-08-28 17:46:11
【问题描述】:

我们需要获取动态构造的变量的值。

我的意思是我们从一个名为data8967677878788node 的属性文件中加载了一个变量。因此,当我们运行 echo $data8967677878788node 时,我们会得到输出 test

现在data8967677878788node 中的数字部分8967677878788 需要是动态的。这意味着可能会有像

这样的变量
data1234node
data346346367node

等等。

数字是脚本的输入参数。所以我们需要这样的东西来工作

TESTVAR="data`echo $DATANUMBER`node"
echo $$TESTVAR #This line gives the value "test"

关于如何实现这一点的任何想法

【问题讨论】:

    标签: linux bash shell scripting sh


    【解决方案1】:

    可以使用 BASH 的间接变量扩展:

    data346346367node='test'
    
    myfunc() {
        datanumber="$1"
        var1="data${datanumber}node"
        echo "${!var1}"
    }
    

    并将其称为:

    myfunc 346346367
    

    输出:

    test
    

    【讨论】:

      【解决方案2】:

      您的代码实际上已经非常接近工作了,只需要稍微修改一下:

      TESTVAR="data`echo $DATANUMBER`node"
      echo ${!TESTVAR}
      

      如果$DATANUMBER 的值为12345$data12345node 的值为test,则上述sn-p 将输出test

      来源:http://wiki.bash-hackers.org/syntax/pe#indirection

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-30
        • 1970-01-01
        • 2022-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多