Unix邮件内容打印在一行中

时间:2017-09-20 01:00:30

标签: unix ksh

我有一个包含以下列表的文件

Listing.txt

File1.txt
File2.txt
File3.txt
File4.txt
File5.txt

我有一个shell脚本,它在我的电子邮件中使用该文件作为正文。

myscript.sh

#!/bin/ksh

recipients=/recipients.txt
listing=/listing.txt
email_content=/email.txt

echo `cat $listing` > $email_content

mail -s "File Listing" `cat $recipients` < $email_content

然而,当我收到邮件时,内容似乎是这样的。它们被打印成一排。

File1.txt File2.txt File3.txt File4.txt File5.txt

我怎样才能让列表与列表中列出的列表类似呢?

2 个答案:

答案 0 :(得分:1)

你可以尝试一次:

mail -s "File Listing" `cat $recipients` < echo "`cat ${email_content}`"

答案 1 :(得分:0)

你的问题在于

echo `cat $listing` > $email_content

对echo的参数进行解释,换行符丢失 您可以使用引号

来解决此问题
echo "`cat $listing`" > $email_content

您可以使用

缩短解决方案(由@KaushikNayak提供)
cat $listing > $email_content
# or
cp $listing > $email_content
# or
mail -s "File Listing" `cat $recipients` < $listing

尽量避免背景并使用更多的引号和花括号:

mail -s "File Listing" $(cat "${recipients}") < "${listing}"