Я пытаюсь загрузить динамически созданный файл журнала из моего локального поля на свой FTP-сервер. Все это происходит в работе cron (crontab), которую я запускаю каждую ночь. Он создает файл, используя:
30 00 * * * touch ~/Desktop/logs/"log$(date +'\%m\%d\%y')"
. Это работает отлично. Однако, когда я пытаюсь загрузить файл, используя тот же синтаксис:
50 00 * * * curl -T ~/Desktop/logs/"log$(date +'\%m\%d\&y')" -u user:pass ftp://example.com/logs/
Он дает мне следующую ошибку:
date: extra Operand
Я также пробовал это, не ускользая от%:
curl -T ~/Desktop/logs/"log$(date +'%m%d%y')" -u user:pass ftp://example.com/logs/
Что работает в обычной командной строке, но когда выполняется через crontab, выдается следующее Ошибка:
/bin/sh: Syntax error: Unterminated quoted string
Любые идеи о том, как успешно загружать ежедневный журнал на мой сервер?
То, как я обычно указывал дату в задании cron, - это не иметь кавычек вокруг всего имени и использовать обратные ссылки вокруг команды date, поэтому:
50 00 * * * curl -T ~/Desktop/logs/log`date +'\%m\%d\%y'` -u user:pass ftp://example.com/logs/
Хотя я ожидал бы, что $(date ...).
(О, и я принимаю амперсанд до того, как y во втором задании cron является опечаткой в вопросе, но если это также в вашей работе cron, которая будет проблема.)
Способ, которым я обычно указывал дату в задании cron, заключается не в том, чтобы иметь кавычки вокруг всего имени и использовать обратные ссылки вокруг команды date, поэтому:
50 00 * * * curl -T ~/Desktop/logs/log`date +'\%m\%d\%y'` -u user:pass ftp://example.com/logs/
Хотя я ожидал бы $(date ...)
.
(О, и я предполагаю, что амперсанд до того, как y во втором задании cron станет опечаткой в вопросе, - но если это также в вашей работе cron, которая будет проблема.)