bash変数の割り当てが最終終了コード$に影響するのはなぜですか?これはどこに文書化されていますか?

bash変数の割り当てが最終終了コード$に影響するのはなぜですか?これはどこに文書化されていますか?

環境変数を設定すると、最後の既存のコード変数が変更されることに驚きました$?

$ false
$ echo $?
1
$ false
$ FOO=BAR
$ echo $?
0
$ 

Bashのマニュアルには次のようにしか記載されていません$?

($?) 最後に実行された前景パイプの終了状態に展開されます。

設定している変数の終了コードはどこに記録されますか?失敗しますか?

ベストアンサー1

右式を評価できないと、割り当てが失敗する可能性があります。

例えば

$ x=HELLO
$ x=$((1/0))
bash: 1/0: division by 0 (error token is "0")
$ echo $?
1 

この場合、値は$x変更されません。

$ echo $x
HELLO

おすすめ記事