Bash bedingte Rohrleitungen

Wie kann ich eine Ausgabe eines Befehls weiterleiten, nur für den Fall, dass sie true zurückgibt?

<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>

Auf diese Weise wird nur die Pipe ausgeführt und nicht geprüft, ob open true oder false zurückgibt, sodass "exit 1" nie ausgeführt wird.

Wie kann ich es lösen, ohne Dateien zu verwenden (aus Sicherheitsgründen).

Antworten auf die Frage(3)

Ihre Antwort auf die Frage