如何在bash中按名称打印变量的值

如何在bash中按名称打印变量的值,bash,Bash,当我知道变量的名称时,我想知道如何打印变量值。 我需要一点帮助来把所有的部件组装起来 假设我有a=a和b=b。此外,我还有文件中a和b的列表。我想打印 a=A b=B 我正在用eval进行测试,但我无法在for循环中进行测试。我猜是因为我无法捕获eval的结果 我可以像这样拼起来,但闻起来 设置 执行 for n in `cat f.txt` do echo -n $n eval echo \$$n done 想要的结果是 a=A b=B 但是如果我以后需要使用这些值,它将

当我知道变量的名称时,我想知道如何打印变量值。 我需要一点帮助来把所有的部件组装起来

假设我有a=a和b=b。此外,我还有文件中a和b的列表。我想打印

a=A
b=B
我正在用
eval
进行测试,但我无法在for循环中进行测试。我猜是因为我无法捕获
eval
的结果

我可以像这样拼起来,但闻起来

设置

执行

for n in `cat f.txt`
do
    echo -n $n
    eval echo \$$n
done
想要的结果是

a=A
b=B
但是如果我以后需要使用这些值,它将不起作用

我不能做的是

val=`eval echo \$$n`
要在以后能够执行echo$val。

您可以执行以下操作:

$ a=A
$ echo $a
A
$ echo a=$a
a=A
这个怎么样

$ for n in `cat f.txt `; do 
>   val=$(eval "echo \$$n")
>   echo $n=$val
> done
a=A
b=B
当然,您不需要使用任何附加变量(
val
),它可能看起来像:

$ for n in $(cat f.txt); do echo $n=$(eval "echo \$$n"); done
a=A
b=B

你真的很想阅读并感谢这些链接,但我只想保持简单…正确操作并不复杂。它符合我的需要,只是不足以解决所有可以想象的问题,但我只想关注一个问题…不,你直接使用
a
,但是我的名字在另一个变量中-
n
在上面的例子中…谢谢,就是这样,当我尝试时,我没有在引号中-
$(eval echo\$$n)
,也许这就是@tripleee想要告诉我的。。。
$ for n in $(cat f.txt); do echo $n=$(eval "echo \$$n"); done
a=A
b=B