PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pfad testen



Mat
16-03-2005, 14:24
Hallo
ich habe nur eine kurze Frage,
ich schreibe ein skript wo ein user einen ordner in einem pfad anlegen soll.

wie kann ich denn testen ob der pfad existiert? also die eingabe wo er den ordner erstellen will existiert als der pfad dorthin????
Das Problem ist dass der User einen pfad angeben kann der erweitert ist:

also wenn a/b/c existiert
und der user a/b/c/d/e anlegt
sich aber vertippt: a/i/b/c/d/e soll ausgegeben werden dass der pfad nicht existiert
sonst bassts

mit test -d <path> kann ichs nicht machen weil er ja nur sieht ob das pfadende existiert....aber der user kann sich ganz am anfang auch vertippen.....

Danke

ThorstenS
16-03-2005, 16:40
Wenn er sich am Anfang vertippt, stimmt das Ende doch somit auch nicht mehr oder sehe ich das falsch?

peschmae
16-03-2005, 16:55
Ich seh das genau so. :)
Ich nehme mal an wir verstehen das beide falsch.

MfG Peschmä

Hans-Georg Normann
16-03-2005, 18:13
Machen wir doch einmal ein Fallbeispiel. Der User hat
/usr/tmp/xyzeingegeben. Jetzt wollen wir also wissen, on /usr/tmpexistiert und wenn ja, dann soll das Directory angelegt werden.
echo "Pfad eingeben \c"
read EINGABE
S_DIR=$(basename $EINGABE)

if [ ! -d $S_DIR ]; then
echo "Dateipfad $S_DIR exisitiert nicht!"
exit 2
fi

if [ -d $EINGABE ];then
echo "Verzeichnis $EINGABE existiert bereits!"
exit 2
fi

mkdir $EINGABEIst es das was du meinst?

Hans

Joghurt
16-03-2005, 21:09
Ich denke, Mat, du hast da einen Denkfehler drin.
Ich vermute mal, du willst verhindern, dass mkdir -p z.B. /use/tmp/bla/bla/bla anlegt, wenn er eigentlich /usr/tmp/bla/bla/bla anlegen sollte. Soweit so gut, dass könnte man lösen.

Aber nehmen wir jetzt mal an, dass der Pfad
a/b/c/d
existiert. Wie willst du bei der Eingabe "a/b/c/c/e/f" vorgehen? Du kannst einerseits annehmen, der User wollte c/e/f in /a/b/c anlegen, oder e/f in a/b/c/d.
Diese Fälle kannst du nicht unterscheiden.

Poste am besten mal genauer, was du machen willst, und wofür du das brauchst.