#!/bin/bash fail_on_output() { tee /dev/stderr | not read } # not makes sure the command passed to it does not exit with a return code of 0. not() { # This is required instead of the earlier (! $COMMAND) because subshells and # pipefail don't work the same on Darwin as in Linux. ! "$@" } # noret_grep will return 0 if zero or more lines were selected, and >1 if an # error occurred. Suppresses grep's return code of 1 when there are no matches # (for eg, empty file). noret_grep() { grep "$@" || [[ $? == 1 ]] } die() { echo "$@" >&2 exit 1 }