#!/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 | |
} |