Skip to content

Instantly share code, notes, and snippets.

@sdr01810
Created October 26, 2017 16:45
Show Gist options
  • Save sdr01810/694af3e281892e9da9979ebb54d7cb42 to your computer and use it in GitHub Desktop.
Save sdr01810/694af3e281892e9da9979ebb54d7cb42 to your computer and use it in GitHub Desktop.
Shell function post_delayed_exit() and friends.
delayed_exit_p=
function post_delayed_exit() { # exit_code explanation ...
local exit_code="${1:?missing argument: exit_code}" ; shift
: "${1:?missing argument: explanation}"
if [ -z "${delayed_exit_p}" ] ; then
delayed_exit_p="${exit_code}"
fi
if [ "${delayed_exit_p:?}" -eq 0 -a "${exit_code:?}" -eq "${delayed_exit_p:?}" ] ; then
echo 1>&2 ; echo 1>&2 "$@" ; delayed_exit_p="${exit_code}"
fi
if [ "${delayed_exit_p:?}" -gt 0 -a "${exit_code:?}" -ge "${delayed_exit_p:?}" ] ; then
echo 1>&2 ; echo 1>&2 "$@" ; delayed_exit_p="${exit_code}"
fi
}
function check_for_delayed_exit() {
if [ -n "${delayed_exit_p}" ] ; then
echo 1>&2 ; exit "${delayed_exit_p}"
fi
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment