Anzeige:
Ergebnis 1 bis 10 von 10

Thema: [Bash] Ganz billiges Skript

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    719

    [Bash] Ganz billiges Skript

    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:

    Code:
    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
    Code:
    #!/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

  2. #2
    Registrierter Benutzer
    Registriert seit
    20.07.2003
    Beiträge
    147
    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.

  3. #3
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    719
    Jo, genau daran lags! Danke dir!

  4. #4
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    was ist m4 ? *neugierigfrag*
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  5. #5
    Registrierter Benutzer Avatar von phate
    Registriert seit
    14.02.2003
    Beiträge
    149
    Hi elrond,

    unter

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

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

  6. #6
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    danke, wieder was dazugelernt wußte garnicht, was meine kiste so alles kann...
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  7. #7
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    719
    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:

    Code:
    define(`HEADER´, `<html><head>$1</head><body>´)
    und dann in jeder von meinen HTML-Dateien

    Code:
    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.

  8. #8
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    sobald ich zu hause wieder online bin werde ich das mal bei meinem provider versuchen, da ich leider auch klein php habe...
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  9. #9
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    719
    Du machst das mit m4 ja auf deinem PC, zu deinem Provider schickst du nur fertig erstellte HTML-Seiten

  10. #10
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    ops, dann habe ich das wohl doch nicht weit genug gelesen...ich hab's für eine serverseitige Makrosprache gehalten *schäm*
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •