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 December 20, 2024 15:15
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
}