#!/usr/bin/env bash set -u set -o pipefail export LC_ALL=C # Own a new directory; verify physical paths before cleanup. parent=$(cd -- "${TMPDIR:-/tmp}" && pwd -P) || exit 1 work=$(mktemp -d "$parent/bhylu-bash.XXXXXX") || exit 1 work=$(cd -- "$work" && pwd -P) || exit 1 case "$work" in "$parent"/bhylu-bash.??????) ;; *) exit 1 ;; esac cleanup() { cd -- "$parent" || return 1 [[ -d $work && ! -L $work ]] || return 1 [[ $(cd -- "$work" && pwd -P) == "$work" ]] || return 1 case "$work" in "$parent"/bhylu-bash.??????) rm -r -- "$work" ;; *) return 1 ;; esac } trap cleanup EXIT cd -- "$work" || exit 1 { printf "north,8\n"; printf "note: synthetic data\n" >&2; } > rows.csv 2> notes.txt [[ $(cat rows.csv) == "north,8" ]] || exit 1 [[ $(cat notes.txt) == "note: synthetic data" ]] || exit 1 printf "Data and diagnostic streams separated\n"