Если вы используете
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 перед отправкой командной строки на удаленный хост.
Вы избежали одного знака процента, а не другого:
$(($(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))
Создайте две записи cron.
Тот, который запускается в дни с нулевой четностью (, использует поле «день недели» в crontab ), которое записывает в файл с нулевым именем. И еще один, который работает по дням с одной четностью, который пишет в файл с именем с одним.