Linux Bash如何使用for循环获取输出并将其放回脚本中

时间:2017-12-07 06:41:12

标签: linux bash indirection

使用echo $var命令可以轻松调用bash中的变量值

user@linux:~$ a=1; b=2; c=a+b
user@linux:~$ echo $a $b $c
1 2 a+b
user@linux:~$ 

我想要完成的是将x替换为a,b,c

中的实际值
user@linux:~$ a=1; b=2; c=a+b
user@linux:~$ for i in a b c; do echo "$i = x"; done
a = x
b = x
c = x
user@linux:~$ 

通过使用类似的for循环,我希望我能得到像这样的输出

a = 1
b = 2
c = a+b

1 个答案:

答案 0 :(得分:3)

使用间接

$ for i in a b c; do echo "$i = ${!i}"; done
a = 1
b = 2
c = a+b

文档

间接man bash

中进行了解释
  

如果参数的第一个字符是感叹号(!),和   参数不是nameref,它引入了一个变量级别   间接。 Bash使用从其余部分形成的变量的值   参数作为变量的名称;那么这个变量就是   扩展,该值用于替换的其余部分,   而不是参数本身的价值。这被称为间接的   扩张。如果参数是nameref,则会扩展为名称   参数引用的变量而不是执行   完全间接扩张。例外    这就是所描述的$ {!prefix *}和$ {!name [@]}的扩展   下面。感叹号必须紧跟左侧   大括号以引入间接。