我有一个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_}"

我的食谱有问题吗?有人能帮我吗?

最佳答案

您需要导入shell脚本。在您的示例中,没有前缀的操作将保存到名为“echo”的文件夹中。
您在${FROM_}变量上也缺少美元符号。

:0 fwb
| ( echo "${SUBJ_}";  echo "${FROM_}" )

你的作业可能会优化很多。很少需要将sed管道连接到sedawk管道;如果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在里面,但我留着以防万一。)

关于linux - 在procmail中打印出变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11010112/

10-14 17:08
查看更多