【问题标题】:print out variable in procmail在procmail中打印出变量
【发布时间】:2012-06-13 07:31:00
【问题描述】:

我有一个 procmail 配方来过滤传入的邮件,如下所示:

  :0
    *^Subject:.*(test)
    * ? egrep -is -f /root/Procmail/whitelist.txt

    {

    :0 fwb
    | formail -I ""


    :0
    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'`

此电子邮件正文(连同变量)应转发到我的文件夹。

我尝试过像这样回显变量,但仍然没有用。

:0 fwb
 echo "${SUBJ_}"
 echo "{FROM_}"

我的食谱有问题吗?有人可以帮帮我吗?

【问题讨论】:

    标签: linux sed awk procmail


    【解决方案1】:

    您需要通过管道进入 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,但我把它留了以防万一。)

    【讨论】:

    • 最后,我找到了解决方案。谢谢@tripleee。你救了我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    相关资源
    最近更新 更多