LoxBerry 1.0
LoxBerry 1.0.3
This function is available starting with LoxBerry V1.0.3. If you use that function, set this minimum version in your plugin.cfg.
LoxBerry 1.0 liefert den iniparser, wie er darunter beschrieben ist, mit.
Folgendermaßen kann er verwendet werden:
#!/bin/bash # Source the iniparser . $LBHOMEDIR/libs/bashlib/iniparser.sh iniparser $LBSCONFIG/general.cfg "BASE" echo "Current LoxBerry version is $BASEVERSION\n" echo "You have a count of $BASEMINISERVERS configured\n"
Es werden alle Variablen der angegebenen Section (hier: BASE) gelesen und als Variable zusammengefügt. Die VERSION in der Section [BASE] wird zur Variable $BASEVERSION.
JSON
Wir empfehlen, Konfigurationsdateien im JSON-Format zu speichern, und das Parsing mit dem Tool jq durchzuführen. Das JSON-Format ist weniger fehleranfällig.
LoxBerry <V1.0
Lösung vorgeschlagen von Andreas Weber
# ini parser from https://www.joedog.org/2015/02/13/sh-script-ini-parser/ # and http://mark.aufflick.com/blog/2007/11/08/parsing-ini-files-with-sed iniparser() { INI_FILE=$1 INI_SECTION=$2 eval `sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' \ -e 's/;.*$//' \ -e 's/[[:space:]]*$//' \ -e 's/^[[:space:]]*//' \ -e "s/^\(.*\)=\([^\"']*\)$/$INI_SECTION\1=\"\2\"/" \ < $INI_FILE \ | sed -n -e "/^\[$INI_SECTION\]/,/^\s*\[/{/^[^;].*\=.*/p;}"` } iniparser configfilename.cfg "BASE"
Diese Lösung wird auch von LoxBerry beim Systemstart eingesetzt.
Die ini_parser Funktion muss vor dem eigentlichen Parse-Aufruf im Code stehen.
Beispiel einer Config:
[MAIN] ConfigVersion=1 enabled=true port=19579
Das ergibt die Variablen $MAINSection, $MAINConfigVersion, $MAINenabled und $MAINport.
Alternativ, funktioniert nur mit Bash
Lösung von http://stackoverflow.com/a/20815951/3466839 (INI-Sections für LoxBerry hinzugefügt), in Verwendung im ALSA Tools Plugin im daemon.
Jede Config-Variable wird als Bash-Variable angelegt. Die Bereiche aus Config::Simple werden dabei vor den Variablennamen gestellt.
Das ergibt die Variablen $MAINSection, $MAINConfigVersion, $MAINenabled und $MAINport.
2 Comments
Andreas Weber
Eine Variante die - weniger generisch - aber dafür nicht auf bash angewiesen ist:
Das ergibt die Variablen $MainConfigVersion, $Mainenabled und $Mainport.
Peter Bazala
So gehts noch einfacher
apt-get install crudini
ms=1
msip=$(crudini --get /opt/loxberry/config/system/general.cfg MINISERVER$ms IPADDRESS)
msuser=$(crudini --get /opt/loxberry/config/system/general.cfg MINISERVER$ms ADMIN)
mspw=$(crudini --get /opt/loxberry/config/system/general.cfg MINISERVER$ms PASS)
msport=$(crudini --get /opt/loxberry/config/system/general.cfg MINISERVER$ms PORT)
msname=$(crudini --get /opt/loxberry/config/system/general.cfg MINISERVER$ms NAME)