Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
cd im skript macht nichts :(

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
thomas
Gast





BeitragVerfasst am: 03. Okt 2003 13:25   Titel: cd im skript macht nichts :(

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
Gast





BeitragVerfasst am: 03. Okt 2003 14:11   Titel: Re: cd im skript macht nichts :(

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
Gast





BeitragVerfasst am: 03. Okt 2003 14:44   Titel: Re: cd im skript macht nichts :(

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
Gast





BeitragVerfasst am: 03. Okt 2003 15:39   Titel: Re: cd im skript macht nichts :(

> 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: for v in *; do echo "$v:"; cd "$v"; ls -l; cd ..; done.
verzeichnisse mit blanks werden damit richtig verarbeitet.
 

thomas
Gast





BeitragVerfasst am: 03. Okt 2003 19:07   Titel: Re: cd im skript macht nichts :(

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
Gast





BeitragVerfasst am: 06. Okt 2003 10:54   Titel: Re: cd im skript macht nichts :(

Und um sich nur die Verzeichnisse mittels "ls" anzeigen zu lassern, gibt es einen kleinen Trick:
ls -d */.
"." (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:
code:
for v in */.
do
... # Hier der Schleifenkörper
done



Jochen
 

rattengift
Gast





BeitragVerfasst am: 06. Okt 2003 11:15   Titel: Re: cd im skript macht nichts :(

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

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy