PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Bash] Ganz billiges Skript



axeljaeger
03-09-2003, 16:42
Hallo,

ich versuche gerade ein kleines Shellskript zu bauen, was mir die Arbeit erleichertn soll (Es ist mein erstes ;-)

Problemstellung:
In einer große Homepage benutze will ich Navigationsleisten, Fußzeilen und ähnliches in seperate Dateien auslagern. Ich habe mir m4 ausgesucht, um die gemeinsamen Elemente in meine Seiten einzubauen. PHP habe ich auf meinem Server nicht zur Verfügung. Es gibt also eine Verzeichnisstruktur:



my
+-src
| +-artikel
| | +-computer
| +-downloads
| +-biken
+-release


Im Verzeichnis src liegen Dateien, die erst von m4 bearbeitet werden müssen, das fertige HTML-Dateien rauskommen. Die fertigen Dateien sollen in einer vergleichbaren Verzeichnisstruktur im Verzeichnis release liegen. Dazu hab ich mir folgendes Skript ausgedacht, was aber nicht funktioniert.

Skript makehtml.sh


#!/bin/sh

tempfile=/tmp/mkhtml.$$

ls > $tempfile # Liste aller Dateien und Verzeichnisse im aktuellen Verzeichnis

for i in $(cat $tempfile); do
if [ -d $i ]; then # Wenn Verzeichnis...
sh -c "cd $i; $1../makehtml.sh $1../" # Dieses Skript im Unterverzeichnis ausführen und ../ + $1 übergeben
fi
done

ls *.m4 >& /dev/null
if [ $? = 0 ]; then # Überprüfen, ob es wenigstens eine .m4-Datei im aktuellen Verzeichnis gibt
for x in *.m4; do # Für jede .m4-Datei m4 aufrufen und .m4 im Dateinamen durch .html und src durch release ersetzen.
echo $(pwd)/$x | sed s/src/release/ | sed s/.m4/.html/ > $tempfile
m4 $(pwd)/$x > cat $tempfile
done
fi
rm $tempfile


Das Problem liegt meiner Meinung daran, das m4 keine gescheite Ausgabedatei bekommt und meine geparste Datei irgendwo im Nirvana landet

sagi
03-09-2003, 17:59
Naja. ich hab zwar keine Ahnung von m4, aber so wie ich das sehe schreibst du alles in ein file names "cat"


m4 $(pwd)/$x > cat $tempfile

mfg

c.

axeljaeger
04-09-2003, 16:39
Jo, genau daran lags! Danke dir!

elrond
05-09-2003, 07:50
was ist m4 ? *neugierigfrag*

phate
05-09-2003, 08:34
Hi elrond,

unter

http://dunne.yi.org/using_m4.html

findet sich eine sehr treffende Beschreibung sowie eine Einführung in m4.

elrond
05-09-2003, 08:47
danke, wieder was dazugelernt :D wußte garnicht, was meine kiste so alles kann...

axeljaeger
05-09-2003, 11:32
m4 ist ein kleines Programm, was Makros expandiert. Ich verwende es auf meiner neuen Homepage, um mir Tiparbeit zu sparen. Ich schreibe in eine Datei:


define(`HEADER´, `<html><head>$1</head><body>´)

und dann in jeder von meinen HTML-Dateien



include(`component.m4´)
HEADER(`Titel der Seite´)


Diese HTML-Seite speichere ich als .m4 ab. Das Skript, was du oben siehst, durchsucht jetzt den gesammten Dateibaum meiner Homepage, wertet die Makros aus und speichert die fertigen HTML-Dateien im Verzeichnis release meines Verzeichnisbaumes. In einer neuen Version kann mein Skript sogar die relativen Pfade entsprechend anpassen, so dass die HTML-Dateien in Unterverzeichnisses die Stylesheets und Grafiken im Hauptverzeichnis finden.

elrond
08-09-2003, 07:58
sobald ich zu hause wieder online bin werde ich das mal bei meinem provider versuchen, da ich leider auch klein php habe...

axeljaeger
08-09-2003, 16:15
Du machst das mit m4 ja auf deinem PC, zu deinem Provider schickst du nur fertig erstellte HTML-Seiten

elrond
08-09-2003, 16:17
ops, dann habe ich das wohl doch nicht weit genug gelesen...ich hab's für eine serverseitige Makrosprache gehalten *schäm*