Liffi hat geschrieben:Du könntest das mit eval machen. Aber du solltest schon genau wissen, warum du das machen möchtest.
eval ist evil. Versuche lieber mal zu beschreiben, wofür du das benötigst.
Hintegrund ist folgender:
Im bestehenden Prozess wird mit BASH-Scripten gearbeitet, welche so genannte "Config files" sourcen (. /pfad/file.conf), in welchen wiederum nur eine monströse Anzahl an Variablen und Arrays beschrieben wird. Diese Variablen/Arrays haben in den bestehenden Bash-Scripten alle eine feste, programmatische Funktion; es ist quasi eine Sammlung von hunderten von Parametern.
Da steht dann sowas hier drin:
Code: Alles auswählen
# project ID
PROJECTID="PIPAPO"
declare -A PIPAPOCONTEXT
PIPAPOCONTEXT["default"]="PIPAPODE"
PIPAPOCONTEXT["BATCH"]="PIPABATCH_EUROPE"
... Bash halt.
Jetzt soll das ganze nach und nach in Python Scripte überführt werden; damit der Regelbetrieb mit den bestehenden Bash-Scripten ohne anpassung des Workflows weiterlaufen kann, soll erst im zweiten Step darüber nachgedacht werden, wie man, mit dem Python Werkzeugkoffer bewaffnet, da etwas vernünftigereres etablieren kann.
Meine Herangehensweise ist hierbei daher mir einen "Bash -> Python" Wrapper zu schreiben, der die gleichen Dateien einlesen kann und daher nicht invasiv in den Workflow eingreift, bis "alles steht".
In diesem Beispiel soll nun aus dem "declare -A PIPAPOCONTEXT" - Bash code, welcher ja ein Bash (named) array erzeugt, ein Python Dictionary namens PIPAPOCONTEXT erzeugt werden. Die Zeilen darunter könnte man ja eigentlich so wie's ist als Python Code verwenden, da dieser ja, nachdem das Dict PIPAPOCONTEXT erzeugt wurde, ebenfalls mit PIPAPOCONTEXT["default"]="PIPAPODE" das Element "default" und dem Wert "PIPAPODE" dem Dict hinzugefügt würde.
Mir erschien es aber "sicherer" das stattdessen auseinander zu nehmen und zur weiteren Verarbeitung Variablen zuzuweisen.
Und da bin ich ja gerade.
Vor dem Hintergrund also: Was ist der Hintergrund davon, dass Ihr da fast geschlossen von abratet?
Mein Ziel ist es aus einem in Teilen unvorteilhaftem Konfig-Format die Daten einfach in Python - Elemente zu wandeln, damit ich es von da ausgehend "sauber" weiterverarbeiten kann.