如果文件存在,请检查procmail并设置一个选项

我想检查procmail是否存在一个文件,并取决于这一组DROPPRIVS =是,如果它不是真的留在DROPPRIVS = no

为什么这不起作用?

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

首先, test的输出是什么都没有,所以反引号将捕获一个空string; 据推测,你实际上想要从test捕获退出代码,而不是输出。

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

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

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

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

! 否定条件,所以任何非零的退出代码触发行动。