Returncode ($?) bei find immer "0" ?

T

Tom71

Mitglied
Hallo,

ich habe in meinen Script einen "find", der gibt auch Daten zurück.
Kann es sein, dass der $? immer 0 ist, auch wenn "find" nichts findet ?

for-Schleife.....
rc=$?
find . -name <Datei>
if [ $rc = 0 ] ; then
echo "Datei gefunden"
else
echo "Datei nicht gefunden"
fi

Gruß
Thomas
 
Zuletzt bearbeitet:
mitch

mitch

Administrator
Hallo Thomas,

in $? müsste der Rückgabewert des zuletzt ausgeführten Befehls stehen. Sollte man ihn nicht nach find abfragen?

Bash:
find . -name <Datei>
rc=$?
if [ $rc = 0 ] ; then
echo "Datei gefunden"
else
echo "Datei nicht gefunden"
fi
 
P

Programmer78

Doppel-As
Kann es sein, dass der $? immer 0 ist, auch wenn "find" nichts findet ?
Ja das steht sogar fast ganz unten im Manual. Ich wunderte mich auch, dass find testing-Funktionen bietet, jedoch immer 0 ausgibt.

Zitat aus "man find":
"find endet mit Status Null, falls alle Dateien erfolgreich verarbeitet wurden und größer als Null, falls ein Fehler aufgetreten ist."

Schreib dein Code also am besten so:

Bash:
if find . -name Dateiname | grep . >/dev/null; then
        echo "Datei gefunden"
else
        echo "Datei nicht gefunden"
fi
 

Ähnliche Themen

Sprung in if-Schleife

If-Abfrage kommt nicht positiv zurück, obwohl Kriterium erfüllt

Switche abfragen über Script

NAS-Drive Mount in Bash-Script über crontab

Hilfe für ein shell script

Oben