PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Shell E-Mail Adresse Prüfen



georgf.d
30-06-2008, 09:11
Hi @all,
ich habe ein eingabescript gebastelt, nur leider habe ich das problem, dass wenn ich eine E-Mail Adresse eingebe, diese noch nicht überprüft wird ob diese Valid ist.
Die Eingabe soll überprüft werden und dann in den file recipient.adr geschrieben werden, habt ihr da noch eine idee??
Ich habe bis jetzt:


Question()
{
dialog --clear --title "Eintrag Setup" --inputbox "Please enter your E-Mail Address" 10 60 2> recipient
}
if [$recipient=='([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})']
then recipient > recipient.adr ; dialog --clear --title "Einträge" --msgbox "E-Mail Address valid" 10 60 2
else Question
fi
Question
clear

Zusätzlich will ich bei einer Dateiausgabe prüfen ob die enthaltene E-Mail Adresse bereits in einer anderen Datei zu finden ist, und dann die E-Mail Adresse aus der datei löschen.
Die Quelldatei ist bereits aufgeräumt;
E-Mailadresse1@test.de
E-Mailadresse2@test.de
...
Will nun prüfen ob E-Mailadresse1@test.de usw. in DATEI 2 zu finden sind, z.B: mit Grep und dann die adressen in die andere Datei schreiben.
Oder einfach die E-Mail Adressen löschen, welche in Datei 2 vorkommen.
habt ihr da eine Idee, bzw. wie kann ich das machen??

if [$recipient='([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})']
then dialog --clear --title "Einträge" --msgbox "E-Mail Address valid" 10 60 2;
else Question;
fi


Vielen Dank im vorraus,

Georgf.d

jan61
01-07-2008, 20:03
Moin,

das ist für mich noch ein ziemliches Durcheinander. Ich kommentiere Deinen Code mal (und rücke ihn gleich ein wenig ein, so dass die Struktur besser erkennbar ist):



# unklar: Soll die Prüfung innerhalb der Funktion erfolgen? Hier nicht der Fall.
Question()
{
# Du schreibst das Ergebnis in die Datei "recipient"
dialog --clear --title "Eintrag Setup" --inputbox "Please enter your E-Mail Address" 10 60 2> recipient
}
# 1. $recipient ist leer, das ist eine Variable. Du suchst:
# if [`cat recipient` ...
# 2. regex kannst Du nicht per "==" abfragen. Dafür gibts z. B. grep:
# cat recipient | grep -q 'regEx'
# 3. Ablauf: Du hast Question noch gar nicht aufgerufen, kannst also
# noch gar keine Ausgabe haben
if [$recipient=='([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})']
then
# Du überschreibst alle bestehenden Eintraege in recipient.adr
# besser: >> (anhaengen)
# ausserdem willst Du hier das Kommando "recipient" ausfuehren. Du suchst:
# cat recipient >>recipient.adr
recipient > recipient.adr
dialog --clear --title "Einträge" --msgbox "E-Mail Address valid" 10 60 2
else
Question
fi
# was bezweckst Du mit der folgenden Zeile? Du wertest die doch nie aus
Question
clearUm Doubletten aus der "recipient.adr" rauszufischen, bietet sich z. B. "sort -u" an:
sort -u recipient.adr >recipient.adr.tmp && \
mv recipient.adr.tmp recipient.adrNoch ein Hinweis zu Deiner Regex: Die ist meiner Meinung nach nicht korrekt. Schau mal hier: http://tools.ietf.org/html/rfc2822

Jan