> exportだと返り値が隠蔽されるのは知りませんでした。

exportがというより変数代入なら止まる。と言った方がいいけどね。
だから echo $(foo) とかもfooでエラーが起きても止まらない。

exportもechoも$(foo)はコマンドの引数だけど
a=$(foo) 変数代入は引数ではない。という違い。


shellcheck薦めておいてなんだけど、shellcheck disableで無視したほうが
いい場合が結構あるので注意。他の言語だと警告は無効化せずに
対応することが多いけど、shellcheckは問題ないようなものまで警告してくる
(というか言語仕様的に問題あるかどうか判断が難しいのだろう)