Thomas Lewandowski schrieb:
Andreas Ernst schrieb:
...dann wirst Du wahrscheinlich schlechte Karten haben, denn die Sonderzeichen solltest Du vorher ersetzen, sonst führen sie nachher zu Fehlern.
Hast Du zugriff auf den String 'Ich bin es'?
Ja ich habe zu griff auf den String! Ich weiß aber nicht was für Sonderzeichen in dem String sind und eigentlich sollen die Sonderzeichen auch bleiben.
Bleiben sie auch. Das ' - Zeichen ist die Begrenzung für Strings in SQL, ähnlich wie in Deinen Script das " - Zeichen. insert into mailliste values ('ich@dot.com', 'SQL', '2004-01-06', 'Ich bin es') Hier erkennt SQL den String 'Ich bin es' für das Feld inhalt. insert into mailliste values ('ich@dot.com', 'SQL', '2004-01-06', 'Ich bin's') Hier erkennt SQL den String 'Ich bin' für das Feld inhalt, somit bleibt
s'< übrig und das ist keiné SQL-Syntax, somit führt Dein insert-Befehl zu einem Fehler.
Das Liegt einfach an der Bash und der Form von "inser into" .... aber da muss man doch was machen können! Damit ist deutlicher wird hier noch mal ein Ausschnitt aus meinem Skript:
#################################################################################################
ABSENDER=`cat /root/Suse_Mails/msg.4Ge | grep -o 'From:[^^]*' | sed s/"<"// | sed s/">"// | sed s/From://` BETREFF=`cat /root/Suse_Mails/msg.4Ge | grep -o 'Subject:[^^]*' | sed s/Subject://` DATUM=`cat /root/Suse_Mails/msg.4Ge | grep -o 'Date:[^^]*' | sed s/Date://` INHALT=`grep "^$" -A 100 msg.4Ge`
Hier mußt Du $INHALT und $BETREFF" auf das Zeichen >'< durch >''< ersetzen.
datenbank="use suse;" echo "$datenbank INSERT INTO mailliste VALUES ('','"$ABSENDER"','"$BETREFF"','"$DATUM"','"$INHALT"');" | mysql #################################################################################################
Kann man da was machen?
gruss tomek
Gruß Andreas