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 Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 07 6 2024  04:31:49      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


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
for-Schleife Shellscript

    







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
ICQ Status  

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
ICQ Status  

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
ICQ Status  


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.


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


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 14 Beiträge im Durchschnitt pro Tag       heute wurden bisher 0 Beiträge verfasst
© x sparkkelsputz        Besucher : 181421969   Heute : 241    Gestern : 5075    Online : 349        7.6.2024    4:31
1 Besucher in den letzten 60 Sekunden        alle 60.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0589909553528