다음 변수 할당을 처리하는 방법은 무엇입니까? var1=1
다음 할당된 값을 할당하고 있지만 var2=$var1
값을 변경할 때마다 항상 이전 값이 표시됩니다 var1
.echo $var2
# var1=1
# var2=$var1
# echo $var2
1
# var1=2
# echo $var2
1
답변1
그것은 어떻게에 관한 것입니다많은/최대프로그래밍 언어가 작동할 수 있습니다.
명령형 언어( bash
// C
/ ....)에서 연산자는 다음 작업을 수행합니다 Java
.python
=
아니요수학에서도 같은 방식으로 작동합니다.
a=1
1을 넣는다는 뜻입니다 a
(거기 있는 것을 덮어씁니다).
즉
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
의 값을 할당하면 var1
두 개의 독립 변수 가 var2
생기고 두 변수는 동일한 값을 갖게 됩니다.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