Pipe-Grep-Beendigungscode weg

4061
math

Wenn ich eine Ausgabe unterdrücken muss, z

foo | grep -v bar 

Foo gibt aber manchmal nur:

bar bar bar... 

grep wird -1 zurückgeben. Wie wandle ich den Exit-Code 1 in 0 um?

6

2 Antworten auf die Frage

8
Goyuix

Sie können immer versuchen, es durch etwas anderes catzu leiten, beispielsweise um den Exit-Code von grep zu entfernen - auch wenn dies ein größerer Hammer ist, als Sie möchten.

und das scheint sogar Posix-kompatibel zu sein math vor 13 Jahren 0
Sie können auch `|| true`, wenn Sie versuchen, den Fehler unter 'set -e' zu umgehen Daenyth vor 13 Jahren 8
@Daenyth Natürlich wandelt dies _every_ einen Exit-Code ungleich Null in 0 um, nicht nur in 1. Marnix Klooster vor 7 Jahren 0
0
Marnix Klooster

Zumindest in bash kannst du verwenden

foo || (EC=$?; if [ $EC -ne 1 ]; then exit $EC; fi) 

Dies ändert den Exit-Code 1 in 0 und nichts anderes.

(Möglicherweise nicht POSIX-kompatibel, aber wahrscheinlich existiert eine POSIX-kompatible Version.)