Verzeichnisstrucktur anlegen mittels bash script? [gelöst]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
magoo
Beiträge: 166
Registriert: 02.05.2005 11:06:58

Verzeichnisstrucktur anlegen mittels bash script? [gelöst]

Beitrag von magoo » 23.08.2006 15:17:29

Schreibe gerade ein kleins Installationsscript für ein zusammengezimmertes PHP/SQL gedöns ding
nun habe ich nur ein Problem - aber erstmal der Quellode von meinem probl

Code: Alles auswählen

#!/bin/bash
#
#
# Meine Verzeichnissstrucktur
#
path=/datenstrucktur
struckt01=zimmer
struckt02=pc

struckt01_01=serverraum
struckt01_02=buero

struckt02_01=server
struckt02_02=client
struckt03_03=router
struckt03_04=firewall


cd $path
mkdir $struckt01
cd $struckt01
mkdir $struckt01_01
mkdir $struckt01_02
mkdir $struckt01_03
mkdir $struckt01_04
Ich möchte aber per script nicht tausendfach mkdir schreiben sondern "mkdir $struckt01_01 bis... $struckt01_04" also ideal wäre

cd $path
cd $struckt[1]
mkdir $struckt01_01 bis $struckt01_keine_mehr_da (auch die unterpunkte von struckt können unterschiedlich sein)
wenn das rum ist dann fange nochmal an mit $struck02.
Wenn der ganze rotz rum ist dann beende das script.

Perfekt wäre wenn struckt01 bis struckt09_02 (also sämtliche variablen außer path) in einer seperaten datei sein könnten (*.txt)

Na wer kann das lösen?!

/edit meandtheshell
Thead Titel geändert da ein sprechender Name viel besser das Problem beschreibt und somit über die Forums Suche besser zu finden ist

s/h0rdc0re bash? PROs ONLY!!!/Wiederholte Ausführung von Statements in bash script?/
Zuletzt geändert von magoo am 24.08.2006 10:00:31, insgesamt 1-mal geändert.

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 23.08.2006 15:22:31

Äh ... Warum nicht ein Kontrollkonstrukt mit dem Namen "for loop" verwenden?
http://www.linuxfibel.de/bash.htm#Schleifen

markus

Benutzeravatar
magoo
Beiträge: 166
Registriert: 02.05.2005 11:06:58

Beitrag von magoo » 23.08.2006 15:33:52

versteh ich nicht sorry...wie msus ich das machen?!

Das script müsste aus :

struckt01=heinz
struckt02=michael
struckt03=timo

struckt01_01=gruppen
struckt01_02=version
struckt03_01=soman

eben verzeichnisse anlegen namens

\heinz\gruppen
\heinz\version
\michael
\heinz
\heinz\soman

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 23.08.2006 15:44:46

Ok, du brauchst eine Liste der Verzeichnisse:

Code: Alles auswählen

#!/bin/bash

#Liste der Verzeichnisse
dirlist="/dir/a/b /dir/a/version/bla /dir/noch/ein/dir"

# Abarbeiten
for dir in $dirlist; do
  echo "Lege Verzeichnis $dir an"
  # -p, falls /dir/a  /dir/a/b nicht existiert. Damit werden falls noetig Parent-Verzeichnisse mit angelegt
  mkdir -p $dir
done

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 23.08.2006 15:49:18

hallo nepos,
danke für den schnellen Hack, der hilft ihm denke ich recht gut.

hallo magoo,
lies dir im Link oben das Kapitel durch. Dort ist die Sache sehr gut erklärt - viel besser und ausführlicher als man es hier könnte.
Im Grund sind das Basics von jeder imperativen Programmiersprache die man sowieso können muss auch wenn man kein Hauptberuflicher Programmierer ist.

markus

Benutzeravatar
I.C.Wiener
Beiträge: 674
Registriert: 19.08.2003 18:45:35

Beitrag von I.C.Wiener » 23.08.2006 15:57:10

Moin,

in diesem Fall ginge wohl auch

Code: Alles auswählen

#!/bin/bash

#Liste der Verzeichnisse
dirlist="/dir/a/b /dir/a/version/bla /dir/noch/ein/dir"

mkdir -p $dirlist
Oder übersehe ich eine Tücke? :)

MfG
Who is... LAIN?

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 23.08.2006 16:06:44

Stimmt, ohne Schleife sollts auch gehen :)

Benutzeravatar
magoo
Beiträge: 166
Registriert: 02.05.2005 11:06:58

Beitrag von magoo » 24.08.2006 09:59:30

Vielen Dank! Das hilft mir sehr :-D

Benutzeravatar
magoo
Beiträge: 166
Registriert: 02.05.2005 11:06:58

Beitrag von magoo » 25.08.2006 07:47:49

Gibts ne möglichkeit eine Variable in eine andere textdatei einzulegen

anstatt:
dir$ ="/var /var/meinprog"
dir$="cat a.txt ?!?

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 25.08.2006 10:31:10

Ja klar:

Code: Alles auswählen

dirlist=`cat datei.txt`
Beachte dabei, dass das keine Single Quotes sondern sogenannte Backticks sind!
Dadurch erreichst du, dass deine Shell in einer Subshell den Befehl cat ausfuehrt und dessen Ausgabe in der Shell-Variablen dirlist landet.

Antworten