0847デフォルトの名無しさん
2018/09/15(土) 02:03:07.61ID:pm09nqHoシェルスクリプト(シバンは #!/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と同じ
どっちが正しい動きなんだろう?