話は変わるけどさ、

シェルスクリプト(シバンは #!/bin/sh 実体はdash)に
A=
A=123 echo "$A-1"
echo "$A-2"

って書いて実行したら以下のように表示されるんだよ。
-1
-2
この動きはA=123が評価される前にechoの変数展開が行われて-1になって
実行したらAの内容が元に戻るから-2と表示されるということで理解できる


でも以下のように書いたら
A=
A=123 eval 'echo "$A-1"'
echo "$A-2"

次のように表示されるんだよ
123-1
123-2

これはどういうわけだろう?

さらにbashとzshで実行した場合は以下のように表示されたw
123-1
-2
この動作ならまだ理解できる。

でもkshやposhやyashなんかはdashと同じ
どっちが正しい動きなんだろう?