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