#! /bin/sh set -e ext="" while :; do case "$#:$1" in 0:* | *:-h | *:--help) echo "Usage: $0 [-e EXT] PROG ARGS..." echo " Buffer stdin to temp file and pass to PROG with ARGS" exit 0 ;; 1:-e) echo >&2 "$0: missing argument"; exit 1 ;; *:-e) ext=$2; shift 2 ;; *:-e*) ext=${1#-e}; shift ;; *:--) shift; break ;; *:-*) echo >&2 "$0: unknown option \`$1'"; exit 1 ;; *) break ;; esac done tmp=${TMPDIR-/tmp}/buf-$$ mkdir "$tmp" trap 'rm -rf "$tmp"' INT QUIT TERM HUP EXIT cat >"$tmp/buf$ext" set +e; "$@" "$tmp/buf$ext"; st=$?; set -e trap '' INT QUIT TERM HUP EXIT rm -rf "$tmp" exit $st