Create a temp directory with an exit trap
Bash
#!/usr/bin/env bash
# Create a private temp directory and always remove it on exit.
set -euo pipefail
src="${1:?usage: $0 FILE}"
workdir="$(mktemp -d "${TMPDIR:-/tmp}/stage.XXXXXXXX")"
cleanup() {
rm -rf -- "$workdir"
}
trap cleanup EXIT
cp -- "$src" "$workdir/payload"
checksum="$(sha256sum -- "$workdir/payload" | cut -d' ' -f1)"
# sha256sum ships with GNU coreutils; on macOS use: shasum -a 256
printf 'staged %s in %s\n' "$checksum" "$workdir"