Unix Shell脚本不发送预期的电子邮件

时间:2014-07-08 17:46:56

标签: shell unix

我有这样的shell脚本。此脚本的目的是从file.csv拖出+输出一定数量的数据,然后将其发送到电子邮件Bob@123.com。 {I}当我尝试在电子邮件功能正文中调用DataFunction时,DataFunction似乎无法正常工作。它似乎发送一个空的电子邮件,其中包含正确的标题和目的地。缺少电子邮件正文,应该是来自DataFunction的数据。这有解决方法吗?提前谢谢。

#!/bin/bash
DataFunction()
{
tail -10 /folder/"file.csv" | head -19
}
fnEmailFunction()
{
echo ${DataFunction}| mail -s Title Bob@123.com
}
fnEmailFunction

3 个答案:

答案 0 :(得分:1)

您正在回显未设置的变量$DataFunction(写为${DataFunction}),而不是调用该函数。

您应该使用:

DataFunction | mail -s Title Bob@123.com

您可能一直在尝试使用:

echo $(DataFunction) | mail -s Title Bob@123.com

但由于几个原因,这是错误的。主要问题是它将DataFunction函数的10行输出转换为mail的单行输入。如果将$(DataFunction)括在双引号中,那将保留输入的“形状”,但与直接运行命令(函数)相比,它会浪费时间和精力。

答案 1 :(得分:0)

试试这个:

mail -s "Title" "bob@123com" <<EOF 
${DataFunction} 
EOF

答案 2 :(得分:0)

我尝试了@ 0xAX的答案,并且无法让它在bash脚本中正常工作。您只需将DataFunction()的输出保存在某个变量中即可。您可以简单地使用这三行来实现这一目标。

    #!/bin/bash

    VAR1=`tail -10 "/folder/file.csv" | head -19`
    echo $VAR1 | mail -s Title Bob@123.com