我想检查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 }
那! 否定条件,所以任何非零的退出代码触发行动。