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