От this tutorial Я смотрел на самом первом примере, и не могу понять, почему b
будет установлен 2
Понимание «пусть» команда
$ let 'b = a' "(a += 3) + $((a = 1)), b++"
$ echo "$a - $b - $?"
4 - 2 - 0
Из моего понимания, let
оценивает команды слева правильно. Таким образом, b=a
оценивается, но так как a
пустым на первый, это имеет значение 0
, который я тестировал с
$ let 'b=a'
$ echo $b
0
Далее, a += 3
, что, поскольку a
является пустым, вычисляется в 3
, но тогда мы добавьте $((a = 1))
, который мне кажется установленным a
назад к 1. Наконец, мы добавляем 1
в b
. Я ожидаю, что выход будет 1 - 1 - 0
. Однако, поскольку вывод 4 - 2 - 0
, мне кажется, что $((a = 1))
- это первый выполненный оператор. Может кто-нибудь объяснить, почему это так?