#!/bin/bash set -e set -o xtrace if [ -z "${on_exit_hooks:-}" ]; then on_exit_hooks=() fi on_exit() { for i in $(seq $((${#on_exit_hooks[*]} - 1)) -1 0); do eval "${on_exit_hooks[$i]}" done } add_on_exit() { local n=${#on_exit_hooks[*]} on_exit_hooks[$n]="$*" if [[ $n -eq 0 ]]; then trap on_exit EXIT fi }