Problem: Bash Script

TheCombatWombat

Cadet 3rd Year
Registriert
Mai 2008
Beiträge
39
Hallo, leider bin ich ziemlicher Linux Anfänger und wollte mir eigentlich "nur" schnell ein Bash Script schreiben, dass mehrer Befehle ausführt.
Und zwar habe ich ein Sammelsurium von Rechnungen die ausgeführt werden müssen. Dazu müssen immer 3 Programme nacheinander ausgeführt werden.
Jede Rechnung hat dabei ein eigenes Unterverzeichnis.
Sieht dann so aus:
/Rechnung1
/Rechnung2
...
Momentan liegt in jedem dieser Verzeichnisse das gleiche Skript (namens calculate), dass so aus sieht
#!/bin/sh
echo Preprocessing
/pfad/befehl1 parameterdatei logdatei
echo Starte Rechnung
/pfad/befehl2 parameterdatei logdatei
usw.
Das funktioniert ja auch alles bestens solange das Script in dem gleichen Verzeichnis wie die Parameterdatei liegt. Sämtliche Pfadangaben in der Parameterdatei sind nämlich relative Pfade!
Jetzt wollte ich mir noch ein Skript basteln, dass alle anderen Berechnungs-Skripte nacheinander ausführt.
Also:
#!/bin/sh
/pfad/Rechnung1 calculate
/pfad/Rechnung2 calculate
usw.
Dies hab ich ins Root gepackt.
Das tut es zwar auch...aber nur mit Fehlermeldungen. Denn jetzt machen die relativen Pfade der Parameterdateien Probleme. Sie werden quasi im falschen Verzeichnis ausgeführt
Also anstelle von /Rechnung1/Unterverzeichnis wird jetzt alles bezogen auf das Root ausgeführt...
In Windows hätte ich ja einfach den cd Befehl genutzt, aber das hilft hier ja scheinbar nicht
Hatt jemand dafür eine Lösung? Ich hoffe ich habe es halbwegs verständlich erklärt

Vielen Dank
CombatWombat
 
Pfade die mit / anfangen sind nicht relativ sondern absolut. / ist das root-Verzeichnis, der Start aller Dateien und Ordner. Relative Pfade fangen ohne / an oder starten mit ./ (Punkt für das aktuelle Verzeichnis) bzw. ../ (2x Punkt für übergeordnetes Verzeichnis).

Du kannst für den relativen Pfad eventuell auch ~ gebrauchen. Das zeigt immer auf das Home-Verzeichnis des Users. Bei UserMüller also auf /home/UserMüller und beim Root auf /root. zB bei UserMüller: cd ~/../../var/ öffnet /var. Er startet im Homeverzeichnis /home/UserMüller, geht danach zweimal in das übergeordnete Verzeichnis (ist jetzt in /) und wechselt dann nach var (-> /var).

Für die Parameterdateien kannst du doch auch gleich das komplette Verzeichnis angeben.
zB so: programm /home/User/whatever

Alternativ vorher ins richtige Verzeichnis gehen:
cd /home/User/whatever/ && programm parameter
 
Zuletzt bearbeitet:
Zurück
Oben