字符串变量的Bash别名/通过引用而不是值复制

时间:2013-04-13 13:46:23

标签: bash variables

考虑以下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中做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以使用

引用另一个变量
$ a=42
$ reference=a
$ echo ${!reference}
42

更改引用变量的值

$ eval ${reference}=4
$ echo ${!reference}
4
echo $a
4