动态评估字符串中的变量值

时间:2016-05-03 15:25:54

标签: linux bash shell scripting sh

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

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

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

这样的变量
data1234node
data346346367node

等。

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

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

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

2 个答案:

答案 0 :(得分:4)

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

data346346367node='test'

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

并将其命名为:

myfunc 346346367

<强>输出:

test

答案 1 :(得分:0)

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

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

如果$DATANUMBER的值为12345$data12345node的值为test,则上述代码段将输出test

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