【问题标题】:How to print the value of a variable by name in bash [duplicate]如何在bash中按名称打印变量的值[重复]
【发布时间】:2017-08-31 13:08:31
【问题描述】:

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

假设我有 a=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

【问题讨论】:

标签: bash


【解决方案1】:

这个怎么样?

$ 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

【讨论】:

  • 谢谢,就是这样,当我尝试时,我没有引号 - $(eval echo \$$n),也许这就是 @tripleee 想告诉我的......
【解决方案2】:

你可以这样做:

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

【讨论】:

  • 不,您直接使用a,但我在其他变量中有名称 - 上面示例中的n...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-23
  • 2023-01-22
  • 1970-01-01
相关资源
最近更新 更多