2

我有一些代码可以自动创建某个名称的变量并为其分配一些值。代码如下所示:

myVariableName="zappo"
eval "${myVariableName}=zappo_value"

如何使用自动生成的变量名称访问该变量的值?所以,我正在寻找一些类似于以下的代码(但有效):

eval "echo ${${myVariableName}}"

(...可能用于 myVariableValue="$(eval "echo ${${myVariableName}}")"...)。

非常感谢您的帮助

如果您认为这种方法很疯狂并且想要提供更一般的建议,那么我正在研究的一般想法是在库中的函数中定义变量,其名称为 ${usage} 和 ${prerequisiteFunctions}。这些在函数中定义的变量将被一个询问函数访问,例如,该函数可以确保安装了先决条件等。所以这个询问函数中的一个循环是这样的:

for currentFunction in ${functionList}; do
    echo "function: ${currentFunction}"
    ${currentFunction} -interrogate # (This puts the function variables into memory.)
    currentInterrogationVariables="${interrogationVariables}" # The variable interrogationVariables contains a list of all function variables available for interrogation.
    for currentInterrogationVariable in ${currentInterrogationVariables}; do
        echo "content of ${currentInterrogationVariable}:"
        eval "echo ${${currentInterrogationVariable}}"
    done
done

再次感谢您的任何想法!

4

2 回答 2

3

尝试:

echo ${!myVariableName}

它将回显包含名称的变量$myVariableName

例如:

#!/bin/bash

VAR1="ONE"
VAR2="TWO"

VARx="VAR1"

echo ${VARx}   # prints "VAR1"
echo ${!VARx}  # prints "ONE"
于 2012-09-07T02:33:09.457 回答
3

IIRC,bash 中的间接是 by !,所以试试${!myVariableName}

于 2012-09-07T02:33:57.567 回答