#!/usr/bin/env bash set -euo pipefail mode=${1:-ok} workdir= cleanup() { local status=$? trap - EXIT if [[ -n $workdir && -d $workdir ]]; then rm -rf -- "$workdir" printf 'removed %s\n' "$workdir" fi exit "$status" } trap cleanup EXIT workdir=$(mktemp --directory "${TMPDIR:-/tmp}/report-cleanup.XXXXXX") printf 'created %s\n' "$workdir" printf 'report data\n' > "$workdir/report.txt" if [[ $mode == fail ]]; then printf 'simulated failure\n' >&2 false fi printf 'finished work\n'