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

时间:2017-08-31 13:08:32

标签: bash

当我知道变量的名称时,我想知道如何打印变量值。 我需要一些帮助才能将所有部分放在一起。

假设我有一个= A和b = B.另外,我在文件中列出了a和b。我想要打印

a=A
b=B

我正在使用eval进行测试,但我无法在for循环中执行此操作。我猜是因为我无法捕获eval ...

的结果

我可以像这样放在一起,但它闻起来......

设置

$ cat f.txt
a
b
$ a=A
$ b=B

执行

for n in `cat f.txt`
do
    echo -n $n
    eval echo \$$n
done

想要的结果是

a=A
b=B

但如果我以后需要使用这些值,它将无效......

我无法做的是

val=`eval echo \$$n`

以后能够echo $val

2 个答案:

答案 0 :(得分:0)

你可以这样做:

$ a=A
$ echo $a
A
$ echo a=$a
a=A

答案 1 :(得分:0)

这个怎么样?

$ 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