Как проверить номер дня месяца?

Похоже, что ваш spamassassin, развернутый через postfix, использует плохо обученную базу данных Байеса.
см. BAYES _00 пробное попадание.

BAYES _00 должен указывать на низкую вероятность спама (ниже 1% ).
Он имеет отрицательную оценку-(-1,9 при использовании сети и байесовского соединения -см. файл 50_scores.cf)

Возможное исправление:
удалить базы данных/файлы Байеса и снова обучить базу данных Байеса.

-2
14.04.2021, 16:37
2 ответа

День месяца можно получить из команды date +%d, которая вызывает команду dateсо строкой формата %d. Эта строка формата, возможно, описана в руководстве date, но определенно в руководстве для функции strftime()C. Он дает вам день месяца в виде двухзначного (, возможно, нуля -, заполненного )числа.

Вы можете использовать это в своем тесте:

day=$( date +%d )

if [ "$day" = "15" ]; then
   echo 'the 15th'
fi

Обратите внимание на использованные здесь кавычки и на то, что проверки на равенство между строками выполняются с помощью одного теста =в [... ].

В последних выпусках оболочки bash(4.2+ ), которую, как я полагаю, вы на самом деле используете, вы также можете получить день месяца с помощью

printf -v day '%(%d)T' -1

Это устанавливает переменную dayна день текущего месяца, не полагаясь на внешнюю команду date. -1означает текущую дату и время, см. описание в руководстве .

5
28.04.2021, 22:52
$ date --help
Usage: date [OPTION]... [+FORMAT]
…
  %d   day of month (e.g., 01)
…

Таким образом, используя строковое равенство (, которое требует начального нуля для чисел до 9, например.= "09"):

if [ "$(date +%d)" = "15" ]; then …

Или, используя числовое равенство (, которое не требует начального нуля, вы можете написать, например,.-eq 9):

if [ "$(date +%d)" -eq 9 ]; then …

Имейте в виду, что в bash [[ $(date +%d) -eq 9 ]]не работает, потому что когда вы используете -eqв двойных скобках, а не в одинарных скобках, он обрабатывает начальный ноль как указание на восьмеричное число. Точно так же, если вы используете арифметические выражения, все оболочки интерпретируют начальные нули как обозначающие восьмеричное число, поэтому что-то вроде (($(date +%d) == 9))не работает.((($(date +%d) == 15))будет работать, но будет отображать сообщение об ошибке 8-го и 9-го числа месяца.)dayOfMonth=$(date +%d); dayOfMonth=${dayOfMonth#0}; ((d == 9))будет работать, потому что в случае дня месяца есть только один ведущий 0.

4
28.04.2021, 22:52

Теги

Похожие вопросы