1

Я пытаюсь использовать переменные в переменных в crontab:

AUTH=user:password
BASE_URL=http://...
COMMAND_OLDB=curl -u $AUTH $BASE_URL/openligadb >> /var/log/cron.openligadb.log

Но только получение почты в /var/mail/root:

X-Cron-Env: <BASE_URL=http://...>
X-Cron-Env: <AUTH=user:password>
X-Cron-Env: <COMMAND_OLDB=curl -u $AUTH $BASE_URL/openligadb >> /var/log/cron.openligadb.log>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
Message-Id: <...>
Date: Mon,  9 Feb 2015 20:10:01 +0100 (CET)

Enter host password for user '$AUTH':
curl: (6) Couldn't resolve host '$BASE_URL'
curl: (6) Couldn't resolve host '>>'
curl: (3) <url> malformed

/var/log/cron.openligadb.log сам по себе пуст. $AUTH и $BASE_URL не будут разрешены в $COMMAND_OLDB . Почему и как это исправить?

1 ответ1

2

Согласно справочной странице crontab (man 5 crontab)

  • если вы установите переменные, это будут переменные окружения (что хорошо, если вы не перезаписываете другие переменные окружения)
  • значение такой переменной НЕ анализируется, подстановки НЕ будут работать

Таким образом, вы можете определить AUTH , BASE_URL но вы не можете определить COMMAND_OLDB который основан на других переменных, потому что они не будут подставлены. Просто поместите команду в строку crontab, вот так (конечно, используйте ваш временной интервал)

*/10 * * * * curl -u $AUTH $BASE_URL/openligadb >> /var/log/cron.openligadb.log

но НЕ так

*/10 * * * $COMMAND_OLDB

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .