我有这样的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
答案 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