Рейтинг:0

Использование кавычек в переменных задания crontab

флаг us

Я пытаюсь получить прошлую дату внутри задания cron, используя что-то вроде этого. Но ДАТИРОВАТЬ переменная всегда пуста.

ДАТА=дата -d "$дата -1 дней -1 месяцев" +%Г-%м
* * * * * /bin/echo "Дата: $($DATE) Test" >> /tmp/crontab.log 2>&1

Я знаю, насколько хитрый crontab благодаря этот вопрос с хорошими ответами, но проблема здесь не в % знак, потому что приведенный выше код работает нормально:

ДАТА=дата -d @2147483647 +%Y-%m
* * * * * /bin/echo "Дата: $($DATE) Test" >> /tmp/crontab.log 2>&1

Но если я использую кавычки, то задание снова не может получить дату.

ДАТА=дата -d"@2147483647" +%Y-%m
* * * * * /bin/echo "Дата: $($DATE) Test" >> /tmp/crontab.log 2>&1

Я пытался заменить кавычки одинарными, двойными кавычками, избежать кавычек, но ни один из этих вариантов не решил проблему. И мне нужны кавычки, чтобы указать "$date -1 дней -1 месяцев" часть. Есть ли способ сделать это в crontab без создания внешнего скрипта?

CentOS 7 и crontab (cronie-1.4.11-23.el7.x86_64)

Рейтинг:0
флаг jp

Проблема не имеет ничего общего с хрон но с переменным расширением внутри $(). датировать команда, вызываемая в подоболочке $() не видит параметр -d "$date -1 дней -1 месяцев" но вместо этого несколько параметров: "$дата -1 дни -1 месяцы. Вы, вероятно, хотите использовать $(вычисление $DATE) вместо.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.