Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

[gelöst] test -d findet Verzeichnisse nicht mehr

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
catweasel
Hacker
Hacker
Beiträge: 437
Registriert: 9. Nov 2006, 19:46

[gelöst] test -d findet Verzeichnisse nicht mehr

Beitrag von catweasel » 3. Sep 2008, 12:06

Hi,

während "find" die Verzeichnisse finden:

Code: Alles auswählen

mm@linux1:~> find /home/mm/install/ -maxdepth 1 -type d
/home/mm/install/
/home/mm/install/google-earth
/home/mm/install/virtualbox
/home/mm/install/ati-installer
werden sie so nicht gefunden:

Code: Alles auswählen

#! /bin/bash

a='/home/mm/install'

for i in `ls $a`; do
	if [ -d $i ];	then
		echo "$i:	Verzeichnis"
	else
		echo "$i:	kein Verzeichnis"
	fi
done

Code: Alles auswählen

mm@linux1:~> ./test.sh
ati-installer:  kein Verzeichnis
google-earth:   kein Verzeichnis
virtualbox:     kein Verzeichnis
Was stimmt mit den Verzeichnissen nicht mehr?
Zuletzt geändert von catweasel am 5. Sep 2008, 16:32, insgesamt 1-mal geändert.

Werbung:
byron1778
Hacker
Hacker
Beiträge: 443
Registriert: 25. Nov 2004, 13:19

Re: test -d findet Verzeichnisse nicht mehr

Beitrag von byron1778 » 3. Sep 2008, 14:17

Hallo!

Ich konnte das jetzt nicht auf einem Linux System testen, sondern musste auf ein Unix System ausweichen.
dort produziert es denselben Fehler wie bei dir!

In einer Manpage konnte ich folgendes zum ls -d Befehl finden!
-d, --directory
list directory entries instead of contents
Weiters konnte ich folgendes finden:

http://www.linuxconfig.org/Bash_script ... e_Testing

Code: Alles auswählen

#!/bin/bash
directory="./BashScripting"

# bash check if directory exists
if [ -d $directory ]; then
	echo "Directory exists"
else 
	echo "Directory does not exists"
fi
Mit -d fragt man ab, ob ein Directory existiert und nicht, ob es eines ist!
So verstehe ich es jedenfalls!

Hoffe, dass das geholfen hat!

mfG

stka
Moderator
Moderator
Beiträge: 3296
Registriert: 1. Jun 2004, 13:56
Wohnort: 51°58'34.91"N 7°38'37.47"E
Kontaktdaten:

Re: test -d findet Verzeichnisse nicht mehr

Beitrag von stka » 3. Sep 2008, 14:54

Ich habe dein Skript mit "test -d " mal kopiert und getestet, hier klappt das so wie es soll.
Du hörst nicht auf zu laufen weil du alt wirst. Du wirst alt weil du aufhörst zu laufen.
Das neue Buch http://www.kania-online.de/fachbuecher

byron1778
Hacker
Hacker
Beiträge: 443
Registriert: 25. Nov 2004, 13:19

Re: test -d findet Verzeichnisse nicht mehr

Beitrag von byron1778 » 3. Sep 2008, 14:59

Hallo!

So geht es auch:

Code: Alles auswählen

#!/bin/bash -x

a='/export/'

for i in `ls -d $a/*`; do
   if [ -d $i ];   then
      echo "$i:   Verzeichnis"
   else
      echo "$i:   kein Verzeichnis"
   fi
done
ls -d muss auf ls -d $a/* erweitert werden!
Dann hat es geklappt!

mfG

catweasel
Hacker
Hacker
Beiträge: 437
Registriert: 9. Nov 2006, 19:46

Re: test -d findet Verzeichnisse nicht mehr

Beitrag von catweasel » 3. Sep 2008, 15:44

Thx! Brauche also nicht alles neu formatieren :irre:

Zum Beweis meiner Einsicht noch eine Version:

Code: Alles auswählen

#! /bin/bash

a='/home/mm/install'

for i in `ls $a`; do
	if [ -d "$a/$i" ];	then
		echo "$a/$i:	Verzeichnis"
	else
		echo "$a/$i:	kein Verzeichnis"
	fi
done

Benutzeravatar
regexer
Advanced Hacker
Advanced Hacker
Beiträge: 1005
Registriert: 3. Dez 2004, 09:29
Wohnort: $_

Re: test -d findet Verzeichnisse nicht mehr

Beitrag von regexer » 4. Sep 2008, 12:54

... wobei man den ls weglassen sollte. Besser:

Code: Alles auswählen

for i in "$a"/*
Siehe http://jengelh.medozas.de/articles/recu ... ors-sh.php

Antworten