Es gibt ein Shell-Skript (bash), das eine CSV-Datei nach Zeilen prüft, die keinem Muster entsprechen, und eine E-Mail mit den falschen Zeilen senden. Das funktioniert gut, aber während die falschen Zeilen kombinieren linux geben einen Zeilenumbruch, in der E-Mail gibt es keinen Zeilenumbruch. Also versuche ich \ r \ n als Zeilenumbruch zu senden, aber das hat keine Wirkung, perl oder bash lösche diesen \ n newline.Wie bekomme ich einen Zeilenumbruch in E-Mail von Shellscript?
ist hier ein minimaler Arbeits Skript als Beispiel:
SUBJECT="Error while parse CSV"
TO="[email protected]"
wrongLines=$(perl -ne 'print "Row $.: $_\r\n" if not /^00[1-9]\d{4,}$/' $file)
MESSAGE="Error while parse following Lines, pattern dont match: \r\n $wrongLines"
echo $MESSAGE |od -c
Der Ausgang od ist:
0000000 E r r o r w h i l e p a r s
0000020 e f o l l o w i n g L i n e
0000040 s , p a t t e r n d o n t
0000060 m a t c h : \ r \ n R o w
0000100 2 : 4 9 2 7 8 3 8 7 4 3 \r R
0000120 o w 3 : 4 8 2 3 2 8 9 7 3 8
0000140 \r \n
0000143
Aber was ist der Grund dafür, dass die \ n zwischen den Zeilen in dem od Ausgang gelöscht? Ich versuche auch \ x0D \ x0A statt \ r \ n aber das hilft auch nicht. Irgendwelche Vorschläge?
Verwenden Sie weitere Anführungszeichen: 'echo" $ MESSAGE "'. Und du willst nicht '\ r'. –
Vielleicht sollten Sie [die 'echo'-Handbuchseite] lesen (http://man7.org/linux/man-pages/man1/echo.1.html)? Oder verwenden Sie stattdessen ['printf'] (http://man7.org/linux/man-pages/man1/printf.1.html)? –
@gniourf_gniourf Die Sequenz "\ r \ n" ist die Standardnebenzeile in vielen textbasierten Protokollen. –