Forums Neueste Beiträge
 

Konfigurationsdatei mit confget einlesen, Datei enthält aber Variablen

25/07/2014 - 18:30 von Thilo Engelbracht | Report spam
Hallo liebe Liste,

ich habe eine Konfigurationsdatei ("datei.ini") mit folgendem Inhalt
(nur ein Beispiel):

[thilo]
.
foo=/home/samba/thilo
bar=/root/data/thilo
.
.

Die einzelnen Variablen kann ich problemlos mit dem Tool "confget" auslesen:

# confget -f datei.ini -s thilo bar
/root/data/thilo

So weit, so gut.

Nun möchte ich aber gerne erreichen, dass der oben genannte Befehl aus
einem bash-script aufgerufen wird. In dem bash-script ist bereits eine
Variable "BASISVERZEICHNIS" mit dem Wert "/root/data" definiert. Aus
diesem Grund wàre optimal (aus Gründen der Übersichtlichkeit), wenn ich
meine Konfigurationsdatei folgenden Aufbau hàtte:

[thilo]
.
foo=/home/samba/thilo
bar=$BASISVERZEICHNIS/thilo
.
.


Test auf der Kommandozeile:

# BASISVERZEICHNIS="/root/data"
# echo $BASISVERZEICHNIS
/root/data

# confget -f datei.ini -s thilo bar
$BASISVERZEICHNIS/thilo

# BAR=$(confget -f datei.ini -s thilo bar)
# echo $BAR
# $BASISVERZEICHNIS/thilo


Auch die Definition mit geschweiften Klammern funktioniert nicht:

[thilo]
.
foo=/home/samba/thilo
bar=${BASISVERZEICHNIS}/thilo
.
.

# BASISVERZEICHNIS="/root/data"
# echo $BASISVERZEICHNIS
/root/data

# BAR=$(confget -f datei.ini -s thilo bar)
# echo $BAR
# ${BASISVERZEICHNIS}/thilo


Hat jemand von Euch eine Idee, wie man es schafft, dass
$BASISVERZEICHNIS durch den entsprechenden Wert ersetzt wird?


Danke und Grüße,

Thilo


Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-REQUEST@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an listmaster@lists.debian.org (engl)
Archive: https://lists.debian.org/53D283B0.4060500@engelbracht.de
 

Lesen sie die antworten

#1 Peter Funk
25/07/2014 - 18:50 | Warnen spam
Hallo Thilo,

Thilo Engelbracht schrieb am Freitag, den 25.07.2014 um 18:20:
Hallo liebe Liste,

ich habe eine Konfigurationsdatei ("datei.ini") mit folgendem Inhalt
(nur ein Beispiel):


...
aus einem bash-script aufgerufen wird. In dem bash-script ist
bereits eine Variable "BASISVERZEICHNIS" mit dem Wert "/root/data"
definiert. Aus diesem Grund wàre optimal (aus Gründen der
Übersichtlichkeit), wenn ich meine Konfigurationsdatei folgenden
Aufbau hàtte:

[thilo]
.
foo=/home/samba/thilo
bar=$BASISVERZEICHNIS/thilo


...
# BAR=$(confget -f datei.ini -s thilo bar)



Probier mal
BAR=`eval echo $(confget -f datei.ini -s thilo bar)`
aus.

eval ist ein eingebauter Befehl der bash.

Davon abgesehen noch ein gut gemeinter Rat ;-) eines alten
Knackers, der sich schon seit über 30 Jahren mit Shell-Skripten
herum geschlagen hat:

Wenn Deine Aufgabe so komplex wird, dass solche
Konfigurations-Dateien notwendig sind, dann ist das ein
Zeichen dafür, dass eine vollwertige objekt orientierte
Programmiersprache wie Python für diese Aufgabe viel besser
geeignet ist.

In Python kann man die Klasse ConfigParser benutzen.
http://docs.python.org/2/library/configparser.html

Viele Grüße, Peter Funk
Peter Funk, home: ✉Oldenburger Str.86, D-27777 Ganderkesee
mobile:+49-179-640-8878 phone:+49-421-20419-0 <http://www.artcom-gmbh.de/>
office: ArtCom GmbH, ✉Haferwende 2, D-28357 Bremen, Germany


Zum AUSTRAGEN schicken Sie eine Mail an
mit dem Subject "unsubscribe". Probleme? Mail an (engl)
Archive: https://lists.debian.org/

Ähnliche fragen