如何处理将变量赋值为值?

如何处理将变量赋值为值?

如何处理下面的变量赋值?我正在分配var1=1下一个分配值var2=$var1,但是每次我更改值时var1echo $var2总是显示旧值,即

# var1=1
# var2=$var1
# echo $var2
1
# var1=2
# echo $var2
1

答案1

这是关于如何许多/最多编程语言可以工作。

在命令式语言 ( bash// C/ ....) 中,运算符执行以下操作Javapython=不是与数学中的工作方式相同。

a=1意味着将 1 放入a(覆盖那里的内容)。

IE

var1=1       # var1 ← 1      #overwrite var1 with 1 
var2=$var1   # var2 ← $var1  #overwrite var2 with evaluation of $var1 (i.e 1) 
var1=2       # var1 ← 2      #overwrite var1 with 2
stdout ←← $var2              #append $var2 to stdout

所以

#              var1   var2
var1=1       #  1      n/a     
var2=$var1   #  1      1
var1=2       #  2      1

答案2

如果您将 的值分配var1var2您,您将拥有两个自变量var1,并且var2它们恰好具有相同的值。

var2您可以使用通过属性声明的变量nameref来引用var1.

$ var1=1
$ declare -n var2=var1
$ echo "$var2"
1
$ var1=2
$ echo "$var2"
2
$ var2=3
$ echo "$var2 $var1"
3 3

相关内容