cd im skript macht nichts :(

Post Reply
Message
Author
thomas

cd im skript macht nichts :(

#1 Post by thomas »

hallo,

folgendes skript läuft nicht wie es soll. "cd" wechselt einfach nicht in die verzeichnisse obwohl ich nun schon die sonderzeichen entschärfe. wenn ich mit "cd verzeichnisname" die sache in der kommandozeile mache, funktioniert es.

meine verzeichnisse haben die form "name - titel (jahr)", also mit leerzeichen und klammern.


...
for v in *
do
echo
echo Bearbeite Verzeichnis: $v
v2="${v// /\ }"
v2="${v2//(/\(}"
v2="${v2//)/\)}"
v2=$v2/
cd "$v2"
...

außerdem würde mich interessieren, welche schalter ich bei "ls" angeben muß, um nur die verzeichnisse angezeigt zu bekommen. oder gibt's andere möglichkeiten?

danke!

thomas

rattengift

Re: cd im skript macht nichts :(

#2 Post by rattengift »

was steht denn bei "....." bzw wie macht es sich denn überhaupt bemerkbar, dass das cd nicht klappt?

was versprichst du dir von der manipulation des verzeichnisnamens? versteh ich irgendwie nicht.

der code (v.a. die parametersubstitutionen) sind schwer lesbar, bitte "code"-tags verwenden (siehe "hilfe").

> außerdem würde mich interessieren, welche schalter ich bei "ls" angeben muß, um nur die verzeichnisse angezeigt zu bekommen. oder gibt's andere möglichkeiten?

soweit ich weiss gibts das nicht, ich hab das auch mal gesucht und nichts gefunden. (hab mich dann halt mit ls -l | grep "^d" beholfen, was aber je nach anwendung nicht praktikabel/zu umständlich ist (wenn man nur den namen will)).

thomas

Re: cd im skript macht nichts :(

#3 Post by thomas »

hallo,

den verzeichnisnamen manipuliere ich deswegen, damit cd mit beispielsweise bei einem verzeichnis "saenger - titel (1995)" nicht sagt, daß es das verzeichnis "saenger" nicht findet, also bei einen leerzeichen nicht abbricht. wenn man in der kommandozeile in ein verzeichnis wechseln möchte und mit TAB den namen autovervollständigt, wird auch statt einem " " (leerzeichen) zusätzlich ein "\" davor eingefügt: "\ ". das gleiche gilt für klammern.
bei mir ist es nun aber so, daß cd meint, "saenger\ -\ titel\ \(1995\)" nicht zu finden, obwohl es definitiv da ist.

thomas

rattengift

Re: cd im skript macht nichts :(

#4 Post by rattengift »

> wenn man in der kommandozeile in ein verzeichnis wechseln möchte und mit TAB den namen autovervollständigt, wird auch statt einem " " (leerzeichen) zusätzlich ein "\" davor eingefügt: "\ ".

wenn du dem namen ein anführungszeichen voranstellst, werden aber bei druck von TAB keine backslashes eingefügt. du kannst dann einfach die blanks in dem string mit anführungszeichen verwenden, dann brauchst du die escape-zeichen (\) nicht. so ist es auch bei skripten, du brauchst keine \.

> bei mir ist es nun aber so, daß cd meint, "saenger\ -\ titel\ \(1995\)" nicht zu finden, obwohl es definitiv da ist.

bin grad auf arbeit und hab keine unix-shell zur hand (nur die win-emu CYGWIN). da (und meiner erfahrung nach auch in linux) genügt einfach cd "$v", also den namen in quotes.
ich hab spasseshalber mal folgendes probiert: <font face="Courier New">for v in *; do echo "$v:"; cd "$v"; ls -l; cd ..; done</font><!--fixed-->.
verzeichnisse mit blanks werden damit richtig verarbeitet.

thomas

Re: cd im skript macht nichts :(

#5 Post by thomas »

hallo,

ja... zwischen die ganzen verzeichnisse hatte sich eine datei gemischt... ab da ging dann nichts mehr.

mein fehler.

trotzdem danke für die hilfe.

mfg
thomas

Jochen

Re: cd im skript macht nichts :(

#6 Post by Jochen »

Und um sich nur die Verzeichnisse mittels "ls" anzeigen zu lassern, gibt es einen kleinen Trick:<pre>ls -d */.</pre>"." (Punkt) ist der Verweis in einem Verzeichnis auf das Verzeichnis selbst. Der Wildcard-Ausdruck löst also nur Verzeichnisse auf. Weil man aber nur den Verzeichnisnamen und nicht den Inhalt des Verzeichnisses sehen will, muss man bei "ls" zusätzlich die Option "-d" angeben. Du hättest Dein Problem also umgehen können, wenn du die Schleife so gebaut hättest: <blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">for v in */.
do
... # Hier der Schleifenkörper
done</font><hr></pre></blockquote>

Jochen

rattengift

Re: cd im skript macht nichts :(

#7 Post by rattengift »

cool, der trick kommt gleich in den werkzeugkasten.
so ist dieser sinnlose thread ja doch noch zu etwas gut.

Post Reply