for-Schleife Shellscript Im Unterforum Hardware, Betriebssysteme, Programmiersprachen - Beschreibung: Alles zu Software, Hardware, Windows, Linux, Programmiersprachen
Anfragen zu Modding, Games, Cracks, etc. unerwünscht.
Elektronik- und Elektroforum Forum Index >>
Hardware, Betriebssysteme, Programmiersprachen
Hardware, Betriebssysteme, Programmiersprachen : Alles zu Software, Hardware, Windows, Linux, Programmiersprachen
Anfragen zu Modding, Games, Cracks, etc. unerwünscht. |
Autor |
|
|
|
BID = 737668
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
|
Hallo Kollegen,
Habe eine SQL-Datenbank, in deren Tabellenspalte 'Name' Zeichenketten stehen, in denen Leerzeichen vorkommen, z.B. "Dies ist eine Zeichenkette".
Nun muss ich bestimmte Datensätze aus einer SQL-Datenbank rausholen und in eine XML-Struktur verpacken.
Ich habe also sowas in der Art:
CHANNELS="`sqlite3 "$SQLDB" "SELECT Name FROM Channels"`"
In CHANNELS ist jetzt eine Liste mit einigen hundert Einträgen, über die ich gerne mit einer for-Schleife iterieren möchte, Probleme machen aber die Zeilenumbrüche!
Bei der for-Schleife werden ja Whitespaces als Trennzeichen benutzt, eine Zeile mit zwei Leerzeichen erzeugt also drei Itarationsschritte.
Wie kann ich zeilenweise mittels for iterieren ist meine Frage!
for CH in "$CHANNELS"; do
...
done
Ich bedanke mich herzlich!
P.S.: auf Performanz kommt nichts an, das ist eine einmalige Sache
_________________
|
|
BID = 737675
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
|
So,
Ich habe das Problem nun umgangen, es bleibt aber weiterhin die Frage:
Wie kann ich zeilenweise iterieren, auch wenn eine Zeile mehrere Whitespaces beinhaltet?
Das würde mich interessieren.
Z.B. funktioniert ja folgendes problemlos:
for DATEI in *; do
echo Datei "$DATEI"
done
Dabei wird * ja zu einer Liste expandiert, die alle Dateinamen enthält, auch jene, die ein Leerzeichen enthalten. Schaut man sich den expandierten Ausdruck jedoch an, ist es verwunderlich, dass obiges Konstrukt überhaupt funktioniert.
_________________
|
|
BID = 737676
clembra Inventar
Beiträge: 5404 Wohnort: Weeze / Niederrhein
|
Lass das for weg, die nehm ich nur noch im Notfall
Code : |
sqlite3 "$SQLDB" "SELECT Name FROM Channels" | \
while read zeile; do
echo "Zeile: $zeile"
done
|
|
PS: The IFS internal variable
_________________
Reboot oder be root, das ist hier die Frage.
[ Diese Nachricht wurde geändert von: clembra am 2 Jan 2011 15:45 ]
|
BID = 737677
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Danke, das probiere ich mal.
Übrigens, es lag an fehlenden Gänsefüßchen
Folgendes klappt nämlich zu 100%:
CHA="`sqlite3 "$SQLDB" "SELECT Name FROM Channels"`"
for C in "$CHA"
do
echo "$C"
done
Nachtrag
@clembra:
Deine Konstruktion läuft ebenso gut; mittels Pipe ist das auch eleganter
_________________
[ Diese Nachricht wurde geändert von: DonComi am 2 Jan 2011 15:49 ]
|
BID = 737681
clembra Inventar
Beiträge: 5404 Wohnort: Weeze / Niederrhein
|
Bin ich jetzt ? Abgesehen davon, dass aus CHANNELS nur CHA geworden ist steht da doch das gleiche wie im Eingangsposting
Oder hast du die nur in deinem Shell-Skript vergessen gehabt und hier im Forum geschrieben?
_________________
Reboot oder be root, das ist hier die Frage.
|
BID = 737683
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Jein.
Viel banaler: in der Schleife habe ich ohne Gänsefüßchen auf den Wert zugegriffen.
Es wird also bloß der Teil bis zum ersten Leerzeichen ausgegeben...
Habe etwas zu schnell geschossen glaube ich...
Offtopic :
| Genau wie Quirin: er löst seine Probleme auch immer selbst |
_________________
|
BID = 737684
clembra Inventar
Beiträge: 5404 Wohnort: Weeze / Niederrhein
|
Offtopic :
| Ja, manchmal braucht man einfach jemanden zum Reden, dem man all seine Probleme erzählen kann. Das allein hilft |
_________________
Reboot oder be root, das ist hier die Frage.
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag heute wurden bisher 11 Beiträge verfasst © x sparkkelsputz Besucher : 182128412 Heute : 2216 Gestern : 5499 Online : 377 5.10.2024 12:58 3 Besucher in den letzten 60 Sekunden alle 20.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0667150020599
|