• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Bash -> Rückgabewert von test

Hallo zusammen !

Wenn ich mit test prüfe, ob eine Datei/Verzeichnis oder sonstiges vorhanden ist, also z.b test -d Verzeichnisname und ich den Rückgabewert in eine Variable speicher, dann steht jedesmal in ihr der Wert 0, ob das Verzeichnis nun existiert oder nicht.

Eigentlich gibt doch test nur 0 zurück wenn die Bedingung erfüllt ist ??

Danke schon mal ...
 
A

Anonymous

Gast
Ich glaube du versucht die Ausgabe von test in die variable zu speichern, und das ist nun mal nichts, notfalls mit Umleitung arbeiten.
Code:
test -d /etc
var=$?
echo $var
robi
 
Ok, aber wieso hat dann var den Wert 0 nach dem Aufruf von test (wenn das
Verzeichnis nicht existiert) ?

Oder ist die 0 dann der Rückgabestatus (Befehl ohne Fehler ausgeführt) ?
 
A

Anonymous

Gast
wenn du eine Variable als Integer deklariert hast dann ist sie erst mal noch komplett leer.
typeset -i VAR
echo $VAR

sobald du aber versuchst dieser Variable etwas zuzuweisen dann steht dort eine 0
VAR=
echo $VAR
0

robi
 
A

Anonymous

Gast
in der Variable ? steht immer der letzte Rückgabewert eines Befehles als 0 oder 1. Also eigentlich ob der Befehl mit oder ohne Fehler ausgeführt werden konnte. sie auch man sh man bash
Oder was wolltest du wissen ?
 
A

Anonymous

Gast
Moment ich hab was falsches erzählt nicht nur 0 oder 1, wenn ein anderer Rückgabewert also return 5 oder so vom Programm zurückgeliefert wird dann steht der natürlich auch da.

robi
 
Jo, Danke Leute !

Ich fasse nochmal kurz zusammen :

test schreibt nix auf die Standardausgabe, deswegen kann ich mit var=$(test -d ...) auch nix empfangen

Und die 0 kommt daher, weil ich v e r s u c h e etwas zuzuweisen.

Und mit 'ner Umleitung klappt's.
 
Oben