Am Freitag, 2. Mai 2008 schrieb Uwe Diederich:
Sandy Drobic wrote:
Uwe Diederich wrote:
Um in deinem Beispiel zu bleiben: In dem script "/usr/local/conf/firewall" befinden sich an irgend einer Stelle folgende Zeile:
[...] . /ich/weiss/wo/ich/bin/grenze.hier [...]
Innerhalb der Datei /ich/weiss/wo/ich/bin/grenze.hier will ich der Pfad (/ich/weiss/wo/ich/bin) ermitteln. Weil durch "." die Datei /ich/weiss/wo/ich/bin/grenze.hier ein Bestandteil von /usr/local/conf/firewall ist, erhalte ich auch mit dirname das Ergebnis: /usr/local/conf. Die Zeile wird durch den Inhalt der Datei "ersetzt". (Vermutlich liegt hier das eigentliche Problem.)
Ich hoffe, dass du selbst diesen Absatz verstanden hast, ich habe nur Bahnhof kapiert. Geht es um den NAMEN der Datei xxx oder um einen Text in der Datei xxx?
Im augenblick glaube ich noch da durchzukommen. Aber frage mich bitte nicht in ein paar Stunden/Tag/...
Stringmanipulation ist hier zu sehen: http://tldp.org/LDP/abs/html/string-manipulation.html
variable=/ein/ganz/seltsamer/pfad/zu/einer/datei echo ${variable##*/} # Dateiname echo ${variable%/*} # Pfad von Datei
# datei # /ein/ganz/seltsamer/pfad/zu/einer
Das Problem ist die die Manipulation eines Strings, sondern das darankommen.
Also geben sind drei Datei: 1 das Script: run.bash 2 die eingebundene Datei: include.txt 3 die Zugriffsdatei: look.at
2+3 liegen in einem Verzeichnis /irgendwo
1 enthält eine Zeile der Form: ". /irgendwo/include.txt"
2 greift auf 3 zu, ohne zu wissen in welchem Verzeichnis sich 2 bzw. 3 befindet.
Die Aufgabe: In 2 den Wert "/irgendwo" verfügbar machen. Der Wert sollte zur Laufzeit ermittelt werden.
(Auch nicht viel verständlicher, oder?)
Fred hatte vorgeschlagen entweder in 1 eine Variable mit dem Wert "/irgendwo" zu definieren und diese in 2 zu verwenden, oder in 2 "/irgendwo" direkt zu verwenden, also "/irgendwo/look.at".
Mit freundlichen Grüßen
Uwe Diederich
und was, wenn run.bash Datei 'sich selber greppt'? Etwa so: grep include.txt run.bash (ginge da auch ein grep include.txt $0 ) dann hättest Du die komplette Zeile, die läßt sich ja vielleicht dafür optimieren. Seufz, ich hab jetzt den Befehl vergessen, aber man kann auch die Zeilen ähnlich Perls split 'TRENNER' in eine Liste 'zerhacken': grep include.txt bash.run | splitte -? '/' -v5 (das wäre dann der 5te Teil oder so - ich probiers immer bisses geht) und dann ginge so 'was in der Richtung wie: for arg in [ `grep include.txt run.bsh | split '/' ` ] do command(s)... done schönes Wochenende, calli -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org