Skip to content

Instantly share code, notes, and snippets.

View discrimy's full-sized avatar

Alexander Bespalov discrimy

View GitHub Profile
@phemmer
phemmer / defer.sh
Last active April 30, 2025 04:05
bash defer function - just like go's defer()
function _run_deferred() {
local _depth="$BASHPID.${#FUNCNAME[@]}"
[[ "$_depth" != "$_deferred_depth" ]] && return
local opt=$-
set +e
for (( i=${#_deferred[@]} - 1; i >= 0; i-- )); do
eval "${_deferred[i]}"
done
[[ "$opt" == *e* ]] && set -e
}