PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Python] BASH-Variablen lesen



Giuly
19-05-2005, 23:03
Hi,
geht das?
Ich hab hier eine Config-Datei, aus der ich die Variable CXXFLAGS auslesen will. Das Problem ist, dass Python bei execfile() einen error meldet, weil CXXFLAGS="${CFLAGS}" ist. Portage kann das ja auch, also muss das ja gehen.
MfG Giuly

[0x[90]|
19-05-2005, 23:28
for line in open("config.cfg").readlines():
if (line.startswith("CXXFLAGS=")): print line.split("=")[1]

Giuly
20-05-2005, 08:59
gut gedacht, aber ich bekomme dann "${CFLAGS}". Ich wollte aber den echten value haben.
eher so:


for each in open("kA.cfg").readlines():
os.system("bash -c 'export " + each + "'")
os.environ["CXXFLAGS"]

was aber nicht geht, das das nicht exported wird. ich glaub ich mach da einfach ein shell-script vor, dass genau das macht. Bessere Lösungen sind aber trotzdem willkommen ;)

Giuly
20-05-2005, 11:38
Problem ist nur, dass wenn eine Zeile so ist:
USE="3dnow 3dfx svga cups foomaticdb ppds usb gtk2 nvidia dvd dvdread mpeg avi 3dnow sse sse2 encode"

dann bearbeitet der jedes Wort, und nicht die ganze Zeile. Kann man einer for-Schleife irgendwie sagen, dass sie jede Zeile, und nicht jedes Wort bearbeiten soll (in BASH-Script)

MfG Giuly

Joghurt
20-05-2005, 13:51
IFS auf Return setzen, das geht mit
IFS="
"

Giuly
20-05-2005, 15:43
#!/bin/bash
source /etc/make.globals
source /etc/make.conf
if [ "${1}" == "" ]
then
echo "Usage: ${0} VARIABLE"
else
echo ${!1}
fi
So gehts auch..

fs111
22-05-2005, 12:15
|']

for line in open("config.cfg").readlines():
if (line.startswith("CXXFLAGS=")): print line.split("=")[1]



spar dir Das readlines, der iterator in einem file-objekt ist eleganter und auch speicherschonender.

fs111