我想用 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 }
否定!
条件,因此任何非零退出代码都会触发操作。