次の変数割り当てを処理する方法は?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
2つの独立変数がvar2
生成され、2つの変数は同じ値を持ちます。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