Назад | Перейти на главную страницу

проверьте с помощью procmail, существует ли файл и установите параметр

Я хочу проверить с помощью procmail, существует ли файл, и в зависимости от этого набора DROPPRIVS = yes, если это не так, оставайтесь с DROPPRIVS = no

Почему это не работает?

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

Во-первых, вывод из test вообще ничего, поэтому обратные кавычки захватят пустую строку; предположительно, вы действительно хотите захватить код выхода из test, а не выход.

Но в любом случае обратные кавычки в условии недействительны. Вы можете использовать обратные кавычки вне условия и сравнивать результат или код выхода с переменной:

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

но, что более идиоматично и элегантно, вы можете использовать один вопросительный знак для проверки кода выхода внешней команды:

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

В ! отменяет условие, поэтому любой ненулевой код выхода запускает действие.