#!/usr/bin/env zsh emulate -L zsh setopt err_exit no_unset pipe_fail path_file=${1:-cleanup.path} mode=${2:-ok} workdir= cleanup() { local exit_status=$? if [ -n "${workdir:-}" ] && [ -d "$workdir" ]; then rm -rf -- "$workdir" print -r -- "removed $workdir" fi return $exit_status } trap cleanup EXIT trap 'exit 130' INT trap 'exit 143' TERM workdir=$(mktemp -d) print -r -- "$workdir" > "$path_file" print -r -- "created $workdir" print -r -- "report data" > "$workdir/report.txt" if [ "$mode" = fail ]; then print -u2 -- "simulated failure" exit 1 fi print -r -- "finished work"