* Stefan Weßels schrieb am 28.Mai.2003:
OS2-Fan wrote:
Merkwürdiger Name.
hier habe ich einen Prototyp eines Skriptes:
count=0
if ls then ((count+=1)) fi
if [[ $count ]] then echo fehlt else echo erfolgreich fi
Das Problem ist nun, dass ich die Ausgabe "fehlt" bekomme, auch wenn `ls` erfolgreich ist.
Versuch mal if test $count -gt 0 Siehe hierzu auch man test
Wenn es Dir um den Rückgabewert von ls geht, warum benutzt Du nicht "$?" ? Diese Variable enthält immer den Rückgabewert des letzten ausgeführten Kommandos. Beispiel:
ls if [ $? -ne 0 ]; then echo "Fehler" else echo "Erfolg" fi
*AGRRRRRRRR* Entschuldige, aber gib hier bitte nicht so blödsinnige Ratschläge. Was der Mensch mit dem komischen Namen gemacht hat, ist an der Stelle genau richtig. if erwartet einen Befehl und wertet dessen Rückgabewert aus. Dabei gilt 0 als wahr und alles andere als falsch. Ein solcher Befehl ist auch test, oder auch [ .. ] was nur ein Synonym zu test ist. [ ist ein Befehl und kein Syntaxbestandteil der shell, darüber sollte man sich im Klaren sein. Du rufst einen Befehl auf und beachtest den Rückgabewert nicht, dann rufst Du nach if einen weitern Befehl auf, der nichts anderes macht, als den Rückgabewert des leten Befehls nochmal rückzugeben. Nicht sonderlich sinnig. Was OS2-Fan gemacht hat ist schon richtig. Allerdings wüßte ich nicht, wie ls ohne Argument was anderes als eine 0 zurückgeben könnte. ls gibt nur dann eine 1 zurück, wenn das Verzeichnis, daß als Argument mitgegeben wird, nicht existiert. Bernd -- Alle meine Signaturen sind rein zufällig und haben nichts mit dem Text oder dem Schreiber zu tun, dem ich antworte. Falls irgendwelche Unrichtigkeiten dabei sein sollten, so bedauere ich das. Es wäre nett, wenn Du mich benachrichtigen würdest. |Zufallssignatur 0