Re: ini-style Konfigurationen mit Shellscripten verarbeiten

Autor: Alexander Holler <holler_at_ahsoftware.de>
Datum: Wed, 19 Nov 2008 13:28:47 +0100
Hallo,

Raphael Becker schrieb:
> Hallo zusammen,
> 
> auf der Suche nach einer Möglichkeit, config-Files in Shell wirklich
> sicher zu verarbeiten, bin ich auf confget gestoßen.
> 
> http://devel.ringlet.net/textproc/confget/
> 
> Das Tool funktioniert scheinbar ganz gut. ABER: portable Shellscripte
> können damit nicht umgehen, weil man nicht annehmen darf, dass "confget"
> auf allen Systemen verfügbar ist.
> 
> Was man annehmen darf ist, dass ein "standard-sed" oder ein
> "standard-awk" existieren.  Letztlich braucht man nur eine Funktion, 
> die ein beliebiges Config-Format in gültige Bourneshell-Variablenzuweisungen 
> umwandelt.

Beliebig würde bedeuten, jemand kann mit XML ankommen. ;)

Ich würde dafür völlig auf sed oder awk verzichten und nur bash 
voraussetzen. Die meisten Sachen für die man sed hernehmen würde, sind 
mit der bash auch machbar. D.h. man nimmt z.B. var1=$(var2/blafasel/} 
anstatt sowas mit sed oder awk zu bewerkstelligen.

Wenn man sich auf das simple und meiner Meinung nach sehr gut 
(menschen-)lesbare Format

var = wert

beschränkt, ist das nicht sonderlich viel was man da tippen muss. Ich 
schätze das erschlägt man mit 10-20 Zeilen.

Quickalgo:

- Für jede Zeile
     - Leading und Trailing Whitespaces loeschen
     - Erstes Zeichen = # -> nächste Zeile (Kommentar)
     ansonsten
     - erstes Wort = variablenname
     - Rest der Zeile nach = und abzüglich leading Whitspaces ist der Wert.

Wer mehr Ansprüche hat, muss eben genau definieren, was er denn einlesen 
will und wie robust der "Parser" gegen Mist in der Konfigurationsdatei 
abgesichert sein muss. Das kann man beliebig kompliziert gestalten und 
lässt sich ganz sicher nicht generell und einfach lösen.

Gruß,

Alexander


--
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: http://wiki.uugrn.org/wiki/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/
Empfangen am 19.11.2008

Dieses Archiv wurde generiert von hypermail 2.2.0 : 19.11.2008 CET