使用 procmail 检查文件是否存在并设置选项

使用 procmail 检查文件是否存在并设置选项

我想用 procmail 检查文件是否存在,并根据此设置 DROPPRIVS=yes,如果不存在则保留 DROPPRIVS=no

为什么这不起作用?

:0 w
* `test -f $HOME/mail/.procmailrc` ?? 1
{
    DROPPRIVS=yes
}

答案1

首先, 的输出test什么都没有,所以反引号将捕获一个空字符串;大概,您实际上想要捕获 的退出代码test,而不是输出。

但无论如何,反引号在条件中无效。您可以在条件之外使用反引号,并将结果或退出代码与变量进行比较:

EXISTS=`test -f $HOME/mail/.procmailrc`
EXITCODE=$?
:0
* EXITCODE ?? ^^1^^
{ DROPPRIVS=yes }

但更惯用和优雅的方式是,您可以使用单个问号来检查外部命令的退出代码:

:0w
* ! ? test -f $HOME/mail/.procmailrc
{ DROPPRIVS=yes }

否定!条件,因此任何非零退出代码都会触发操作。

相关内容