Vivarium · Layer 2 · Docker (catalogue)
bash の local がコマンド置換の終了コードを覆い隠す
local をコマンド置換と組み合わせると、local 自身の (常に 0 の) 終了コードが右辺の終了コードを上書きする。そのため set -e は右辺の失敗を黙って素通りさせ、本番スクリプトが静かに壊れる。upstream の defect ではなく bash と POSIX が文書化した挙動だが、このページはその意外さを数秒で再現できるようにする。
CI verdict スナップショット
verdict スナップショットを読み込み中…
自分で再現する
docker run --rm ghcr.io/aletheia-works/vivarium-bash-local-shadows-exit:latest
CI スナップショットの出力
Initialising…
(読み込み中…)