我有一个procmail方法来过滤传入的邮件,如下所示:
:0
*^Subject:.*(test)
* ? egrep -is -f /root/Procmail/whitelist.txt
{
:0 fwb
| formail -I ""
:0
myfolder/
}上面的配方功能是过滤出电子邮件的正文内容,并将该邮件转发到myfolder。问题是我有一个变量,我想把它放在身体里。
FROM_=`formail -c -x"From " \
| expand | sed -e 's/^[ ]*//g' -e 's/[ ]*$//g' \
| awk '{ print $1 }'`
SUBJ_=`formail -c -x"Subject:" \
| expand \
| sed -e 's/ */ /g' \
| sed -e 's/^[ ]*//g' -e 's/[ ]*$//g'`此电子邮件正文(连同变量)应转发到myfolder。
我试着像这样回显变量,但仍然没有用。
:0 fwb
echo "${SUBJ_}"
echo "{FROM_}"我的食谱有问题吗?有人能帮我吗?
发布于 2012-06-14 15:23:00
您需要通过管道进入shell脚本。没有前缀的操作保存到名为"echo“的文件夹中。
您还缺少${FROM_}变量上的美元符号。
:0 fwb
| ( echo "${SUBJ_}"; echo "${FROM_}" )你的任务可能会得到很大的优化。很少需要通过管道将sed连接到sed或awk;如果sed无法处理您想要的内容,那么就让awk来完成所有工作。
FROM_=`formail -c -x"From " \
| expand \
| awk '{ gsub (/^[ ]*|[ ]*$/,""); print $1 }'`
SUBJ_=`formail -c -x"Subject:" \
| expand \
| sed -e 's/ */ /g' -e 's/^[ ]*//g' -e 's/[ ]*$//g'`(我也不确定为什么需要expand,但我把它留在那里以防万一。)
https://stackoverflow.com/questions/11010112
复制相似问题