PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Shell-Programmierung



Morfio
04.02.03, 12:51
Hi,

ich wollte ein Script (Bash) schreiben, was folgendes macht:

- Das Script liegt in einem Verzeichnis.
- In dem Verzeichnis sind Unterverzeichnisse
- Jedes Unterverzeichnis hat ein Verzeichnist "bck"
- Das Script soll etwas in das "bck"-Verzeichnis jedes Unterverzeichnisses kopieren

Die Unterverzeichnisse sollen dem Script aber nicht bekannt sein, sondern es soll selbstständig diese einlesen. Also:

cp test.txt /variabler_name_unterverzeichnis/bck/

So in etwa soll das ablaufen.

Weiss vielleicht jemand von Euch, wie man das machen kann mit Shell-Script? Ich scheitere am Einlesen der Verzeichnisse. Das muss ja normal in einer Schleife geschehen, das Verzeichnis muss in eine Variable und dann mit "variabler_name_unterverzeichnis" ersetzt werden.

Vielen Dank,

Morfio ...

hunter
04.02.03, 13:23
Das ist zu tief in Sachen Programmierung !!!

Wende dich bitte an: http://mrunix.de

Das ist die Partnerseite von Linuxforen.de die sich mit Programmierung beschäftigt. Wenn du hier angemldet bist, bist du es auch dort.

Morfio
04.02.03, 13:31
Hi,

Vielen Dank.

Gruss,

Morfio ...

netzmeister
04.02.03, 13:36
Hallo hunter,

das mit der Anmeldung stimmt nicht mehr. Die Datanbanken sind nicht von der Userseite her
nicht synchron.

Viele Grüße

Eicke

hunter
04.02.03, 14:41
Ach so. Na dann sind meine Infos wohl schon etwas veraltet. Ich bin z.B. da drin gewesen obwohl ich mich nie dort angemeldet habe.

Naja, eine weitere Anmeldung kriegt er schon hin.

Nachtgeist
04.02.03, 15:10
Original geschrieben von Morfio
- Das Script liegt in einem Verzeichnis.
- In dem Verzeichnis sind Unterverzeichnisse
- Jedes Unterverzeichnis hat ein Verzeichnist "bck"
- Das Script soll etwas in das "bck"-Verzeichnis jedes Unterverzeichnisses kopieren

So in der Art?

--- snip ---
for verzeichnis in `ls` ; do
for unterverzeichnis in `ls $verzeichnis` ; do
cp $1 $verzeichnis/$unterverzeichnis/bck/
done
done
--- snip ---

Geht natuerlich nur, solange in den Unterverzeichnissen nicht weitere Unterverzeichnisse sind, aber das liesse sich auch weiter so machen. (dann evtl indem man die Schleife einfach in eine Funktion auslagert und diese sich dann rekursiv aufruft))

HTH

(Was soll daran zu arg Prorammieren sein?)

marcdevil
04.02.03, 15:17
und wie wärs mit dem hier ?


find . -type d -name bck -exec cp /my/hallo.txt {} \;

Morfio
04.02.03, 15:27
Hi,

danke für die Antworten. Bin aber selber auch schon soweit gekommen *stolz*. Ich bin jetzt hier, ist das richtig so?:

1 #!/bin/sh
2
3 zaehler=0
4
5 for dir in `find ./ -type d -maxdepth 1`; do
6 if [ $zaehler -ne 0 ]; then
7 if [ ! -d $dir'/backup' ]; then
8 mkdir $dir'/backup'
9 fi
10 fi
11 zaehler=$(($zaehler+1))
12 done

Das überprüft jetzt erstmal, ob das verzeichnis existiert und legt es an, falls nicht.

Vielen Dank,

Morfio ...

ZAD42
04.02.03, 17:11
für entsprechende literatur zum thema guck mal unter http://www.theparallax.com/wissen/os/linux/die-shell.html#literatur