使用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
答案 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 [@]}的扩展 下面。感叹号必须紧跟左侧 大括号以引入间接。