Forum: PC-Programmierung testen ob verzeichniss existiert batch linux


von nerd (Gast)


Lesenswert?

Hallo,
ich moechte testen ob ein Verzeichniss existiert

mein ansatz ist
1
if [[  ! -d "/storage/.kodi/userdata/addon_data/service.tvheadend/dvr/log" ]];then
2
echo "f"
3
fi

allerdings ist es egal ob das verzeichniss exisiterit oder nicht er geht 
gibt immer "f" aus. was amche ich falsch?

von JJ (Gast)


Lesenswert?

Der Ausdruck in deinem Beispiel testet, ob ein Verzeichnis NICHT 
exitiert. versuche es mal ohne das !

von nerd (Gast)


Lesenswert?

hab es zu
1
if [[ -d "/storage/.kodi/userdata/addon_data/service.tvheadend/dvr/log" ]]; then

geaendert und jetzt kommt

-sh: getcwd: No such file or directory

wenn das Verzeichniss nicht existiert und wenn es existiert passiert gar 
nix

von another way to (Gast)


Lesenswert?

mach es doch mit nem simplen find

Exit Status

find exits with status 0 if all files are processed successfully, 
greater than 0 if errors occur. This is deliberately a very broad 
description, but if the return value is non-zero, you should not rely on 
the correctness of the results of find.

von Michael J. (jogibaer)


Lesenswert?

Hallo,

probiere mal "test".

Jogibär

PS:

man test

...
-d DATEI
              DATEI existiert und ist ein Verzeichnis
...

: Bearbeitet durch User
von JJ (Gast)


Lesenswert?

nerd schrieb:
> -sh: getcwd: No such file or directory

?!? Die Meldung bedeutet, dass das Verzeichnis in dem du selber stehst 
während das Kommando ausgeführt wird nicht mehr existiert. Da scheint 
noch etwas im Umfeld der Verzeigung schief zu gehen.

von Daniel A. (daniel-a)


Lesenswert?

nerd schrieb:
> if [[ -d "/storage/.kodi/userdata/addon_data/service.tvheadend/dvr/log" ]]; then

Sollte das nicht nur ein [ sein?
1
if [ -d "/storage/.kodi/userdata/addon_data/service.tvheadend/dvr/log" ]; then

von Rolf M. (rmagnus)


Lesenswert?

nerd schrieb:
1
> if [[  ! -d "/storage/.kodi/userdata/addon_data/service.tvheadend/dvr/log" ]];then
2
> echo "f"
3
> fi
>
> allerdings ist es egal ob das verzeichniss exisiterit oder nicht er geht
> gibt immer "f" aus. was amche ich falsch?

Hast du denn auch Zugriff darauf? Was gibt
1
stat /storage/.kodi/userdata/addon_data/service.tvheadend/dvr/log
aus?


Daniel A. schrieb:
> Sollte das nicht nur ein [ sein?

Ich hätte auch nur eins gemacht, aber bei mir funktionieren beide 
Varianten problemlos.

von T.roll (Gast)


Lesenswert?

1
if [ -d "/storage/.kodi/userdata/addon_data/service.tvheadend/dvr/log" ];then
2
echo "f"
3
fi

von c.m. (Gast)


Lesenswert?

1
camikusch@node01:/home/camikusch/ export DIR=/var/log
2
camikusch@node01:/home/camikusch/ if test -d ${DIR} -a -r ${DIR}; then echo "guddi" ; else echo "kaka" ; fi
3
guddi
4
camikusch@node01:/home/camikusch/ export DIR=/var/loglaksdjalksjd
5
camikusch@node01:/home/camikusch/ if test -d ${DIR} -a -r ${DIR}; then echo "guddi" ; else echo "kaka" ; fi
6
kaka

gut genug?

von Planlos (Gast)


Lesenswert?

c.m. schrieb:
> gut genug?

Besser "${DIR}" verwenden. Sonst klappt's mit 
DIR="/home/planlos/Dokumente und Einstellungen" nicht mehr.

von MaWin (Gast)


Lesenswert?

c.m. schrieb:
> export DIR=/var/log

Warum export?

von Zeno (Gast)


Lesenswert?

Ist an dieser Stelle eigentlich nicht erforderlich. Das braucht man nur 
wenn das DIR im Script definiert und auch außerhalb des Scriptes auf DIR 
zugreifen will.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.