[linux-l] Bash: Handling von Kommentaren und Leerzeilen in Config-Files

Schlomo Schapiro belug at schapiro.org
Mo Mai 26 22:21:41 CEST 2003


Hello Thomas,

um Konfigdateien richtig gut zu parsen würde ich awk empfehlen. Du kannst
dann auch Container und Verschachtelungen wie bei Apache oder Sektionen wie
bei einer INI-Datei haben. Ich habe jetzt so ein admin skript gebaut,
welches eine XML Konfigdatei mit awk einliest und daraus ein shell-skript
generiert. Das sieht dann etwa so aus:

konfig=$(awk -v key1=val1 -v key2=val2 -f parsexml.awk konfig.xml)
eval "$konfig" || fatal "XML Parsing error: $awk"

das awk script generiert halt shell-Befehle, unter anderem definiert es
Variablen. Falls ein Fehler passiert, dann wird die Variable awk mit dem
Fehlertext gefüllt.

Der Vorteil von awk ist, daß man die Konfigdatei viel intelligenter parsen
kann als mit shell read (es muß natürlich nicht gleich eine XML Datei sein,
das war aber bei mir Vorgabe).

Schlomo

Monday, May 26, 2003, 6:04:11 PM, you wrote:

> * Dani Oderbolz <oderbolz at ecologic.de> [13.05.03 16:27]:
>> Hallo zusammen,
>> ich bauen mir gerade eine nette Sammlung von Administrationsscripts 
>> zusammen,
>> wobei ich den Code streng von der Konfiguration trennen will.
>> Ich habe aber noch Schwierigkeiten mit Kommentaren und Leerzeilen in meinen
>> Config Dateien.
>> 
>> Ich mache so etwas:
> [ stringoperationen in der shell ]
>> Was meint ihr dazu?
> fatal ()
> {  
>   echo "fatal error: $1"
>   exit 99
> }
> grep -v '^#' $CONFIGFILE | grep -v '^$' | \
> while read SOURCEDIR TARGETDIR; do
>     test -z "$SOURCEDIR" -o -z "$DESTDIR" && \
>         fatal "Invalid line in $CONFIGFILE"
>     # weiter im text
>     ...
> done

> Gruß 
> Thomas
> _______________________________________________
> linux-l mailing list
> linux-l at mlists.in-berlin.de
> https://mlists.in-berlin.de/mailman/listinfo/linux-l


-- 
Best regards,
 Schlomo





Mehr Informationen über die Mailingliste linux-l