考虑以下Bash脚本:
$ A=35
$ echo $A
35
$ B=$A
$ echo $B
35
$ B=43
$ echo $B
43
$ echo $A
35
我声明了变量A
,为其分配了值35
,使B
等于A
,并将值43
分配给{{ 1}}。看来B
在所有这些之后保留了值A
,所以我猜测当你将bash中的一个变量分配给另一个时,它是按值复制,而不是通过引用复制。
我希望能够做的是更改35
的值并将其反映在B
中(通过引用复制)。或者,在我的实际情况中,我只是不想产生按值复制的内存开销,因为我知道它是一个大变量,并且不想将它存储在内存中两次。有没有办法在Bash中做到这一点?
答案 0 :(得分:3)
您可以使用
引用另一个变量$ a=42
$ reference=a
$ echo ${!reference}
42
更改引用变量的值
$ eval ${reference}=4
$ echo ${!reference}
4
echo $a
4