Tubería condicional Bash

¿Cómo puedo canalizar una salida de un comando en caso de que devuelva verdadero?

<code>function open
{
    TEMPFILE=$(mktemp -u)
    if ! gpg2 --quiet --decrypt --batch --passphrase "$2" "$1" 2> $TEMPFILE; then
        error $"Password errata od errore di lettura dal file\n\nDettagli:\n$(grep -v '^$' $TEMPFILE)"
        rm -f $TEMPFILE
        return 1
    fi
    rm -f $TEMPFILE
}

if ! open "$@" "$PASSWORD"; then
    exit 1
fi | <SOMECOMMAND>
</code>

De esta manera, simplemente canaliza y no verifica si abrir devuelve verdadero o falso, por lo que nunca se ejecuta la "salida 1".

¿Cómo puedo solucionarlo sin usar archivos (por razones de seguridad)?

Respuestas a la pregunta(3)

Su respuesta a la pregunta