Wie kann ich mit mailx beim Versenden von Anhängen Zeilenumbrüche im Fließtext beibehalten?

Wie kann ich mit mailx beim Versenden von Anhängen Zeilenumbrüche im Fließtext beibehalten?

Ich habe ein Skript, das den Text einer Protokolldatei als E-Mail-Text versendet. Diese Protokolldatei enthält zur besseren Lesbarkeit einige Leerzeilen zwischen den Textzeilen.

Wenn ich die folgende Zeile im Skript verwende, wird die E-Mail ordnungsgemäß und mit der richtigen Formatierung gesendet:

cat ${log}|mailx -s "Email Subject Line" ${i} < ${log}

Ich möchte nun jedoch mehrere Dateien an die E-Mail anhängen. Ich habe die Zeile wie folgt geändert:

( echo `cat ${log}` ; uuencode ${file1} ${file1a} ; uuencode ${file2} ${file2a} ; uuencode ${file3} ${file3a} ) | mailx -m -s "Email Subject Line" ${i}

Beachten Sie, dass ${i}in beiden Zeilen der E-Mail-Empfänger steht.

Jetzt wird die E-Mail mit den Anhängen problemlos versendet, der Nachrichtentext besteht jedoch nur aus einem großen Textblock ohne Zeilenumbrüche oder ähnliches.

Habe ich die Mailx-Zeile falsch geschrieben? Gibt es eine Möglichkeit, die Formatierung im Nachrichtentext beizubehalten?

Antwort1

Nicht in Anführungszeichen gesetzte Zeilenumbrüche in Befehlszeilen werden als Leerzeichen behandelt. Deshalb können Sie Dinge sagen wie

Befehl 1  &&
Befehl 2

Nun, manchmal werden Zeilenumbrüche ohne Anführungszeichen wie Semikolons behandelt. Aber wenn Sie sagen

echo `cat ${log}`

alle Zeilenumbrüche in der Protokolldatei werden in Leerzeichen umgewandelt. Sie können dies beheben, indem Sie sagen

echo "`cat ${log}`"

aber warum nicht einfach sagen

cat ${log}

?

verwandte Informationen