H3llGhost hat geschrieben:Hallo zusammen,
ich habe folgenden Skript. Dieser funktioniert leider nicht so wie gewünscht. Die " " hinter data sind essentiell und ich habe auch keine Möglichkeit die Quelldateien zu verändern.
Code: Alles auswählen
for tag in condition temp_c humidity icon wind_condition
do
declare $tag=$(sed -r -n "s/<$tag data\="(.*)"\/>/\1/p" wetter2.xml)
done
Habt ihr eine Idee?
Vielen Dank im Vorraus.
Backslash escapen der Anführungszeichen:
Code: Alles auswählen
for tag in condition temp_c humidity icon wind_condition
do
declare $tag=$(sed -r -n "s/<$tag data=\"(.*)\"\/>/\1/p" wetter2.xml)
done
Ich weiß ja nicht, wie deine wetter datei aufgebaut ist, aber wenn da mehrere $tags pro Zeile vorkommen können, dann kriegst du eventuell ungewünschte Resultate, weil .* greedy ist und bis zum letzten Anführungszeichen matchen würde. Besser wäre eine Negation, also
und Du solltest den Teil zwischen $(...) auch noch quoten, sonst bricht es, wenn Leerzeichen vorkommen.
Grüße,
Chrisitan