common.sh 507 B

12345678910111213141516171819
  1. cleanup() {
  2. pkill -P $$ || true
  3. wait || true
  4. }
  5. trap_add() {
  6. trap_add_cmd=$1; shift || fatal "${FUNCNAME} usage error"
  7. for trap_add_name in "$@"; do
  8. trap -- "$(
  9. extract_trap_cmd() { printf '%s\n' "${3:-}"; }
  10. eval "extract_trap_cmd $(trap -p "${trap_add_name}")"
  11. printf '%s\n' "${trap_add_cmd}"
  12. )" "${trap_add_name}" \
  13. || fatal "unable to add to trap ${trap_add_name}"
  14. done
  15. }
  16. declare -f -t trap_add
  17. trap_add 'cleanup' EXIT