シェルスクリプトの set -e は罠いっぱい

set -e が推奨されることがあるが、罠があるので気をつけようぜ。
28
Hiroki Sato @Hiroki_Sato

@satoh_fumiyasu ちなみに FreeBSD の sh(1) には、最近(といっても5年くらい前)次のような注記が入れられました。 It is recommended to check for failures explicitly instead of relying on -e because it tends to behave in unexpected ways, particularly in larger scripts.

2019-12-30 05:07:44
Hiroki Sato @Hiroki_Sato

@satoh_fumiyasu -eu でエラー処理しようと、こう書くとさらにハマりますね。もうPOSIXから逸脱しているので一貫性がなくても不思議ではない領域ですが、ash, ksh, bash で e, u 有無時の挙動が違う。 trap 'echo ERR: $LINENO: $?' ERR echo A $A $LINENO false echo B $LINENO

2019-12-30 05:15:44