![使用 procmail 检查文件是否存在并设置选项](https://linux22.com/image/628058/%E4%BD%BF%E7%94%A8%20procmail%20%E6%A3%80%E6%9F%A5%E6%96%87%E4%BB%B6%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E5%B9%B6%E8%AE%BE%E7%BD%AE%E9%80%89%E9%A1%B9.png)
我想用 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 }
否定!
条件,因此任何非零退出代码都会触发操作。