Вычислить математическое выражение в cron

Если вы используете

ssh pvt@192.168.1.133 "~/tools/run_pvt.pl $BUILD_NUMBER"

вместо

ssh pvt@192.168.1.133 '~/tools/run_pvt.pl $BUILD_NUMBER'

, ваша оболочка будет интерполировать $ BUILD_NUMBER перед отправкой командной строки на удаленный хост.

1
09.07.2017, 17:13
2 ответа

Вы избежали одного знака процента, а не другого:

$(($(date +\%u)%2))
               ^
              HERE

Все знаки процента в записи crontab должны быть экранированы, потому что % имеет там особое значение. Цитата из crontab (5 )man-страницы:

The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the crontab file. Percent-signs (%) in the command,unless escaped with backslash (), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.

Правда, этот абзац можно было бы сформулировать лучше.

Так и должно быть:

$(($(date +\%u)\%2))
8
27.01.2020, 23:11

Создайте две записи cron.

Тот, который запускается в дни с нулевой четностью (, использует поле «день недели» в crontab ), которое записывает в файл с нулевым именем. И еще один, который работает по дням с одной четностью, который пишет в файл с именем с одним.

1
27.01.2020, 23:11

Теги

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