鉴于linux shell代码,
~$ (( b = a, (a += 3) + $((a = 1)), b++ ))
~$ echo $b
2
为什么$b
等于2?我将代码分为三个步骤:
~$ ((b = a))
~$ (((a += 3) + $((a = 1))))
~$ ((b++))
~$ echo $b
1
这次 $b
等于1,为什么?
P.S。 a和b都没有被初始化。
答案 0 :(得分:0)
因为您设置了b = a
,然后bash等待最后分配a
。在b
中,系统会为分配给a
的值分配相同的值。
~$ (( b = a, (a += 3) + $((a = 5)), b++ ))
~$ echo $b
6
~$ echo $a
8
修改强>
1)按列处理列分隔的表达式
~$ echo $((1+1, 2+2, 3+3))
6
2)首先处理$((...))
个表达式
给出结果:
(( b = a, (a += 3) + $((a = 1)), b++ ))
$((a = 1)) #a=1
b = a #a=b=1
a += 3 #a=4, b=1
b++ #a=4, b=2