У меня есть сценарий оболочки, который генерирует некоторые выходные данные. Вывод записывается в файл. В моем задании cron у меня есть это: ./myscript.sh --options> output Поскольку задание cron выполняется каждую неделю, я хотел бы сохранить список выходных данных, а не перезаписывать их каждый раз при запуске сценария. Итак, в идеале я хотел бы иметь имя выходного файла как output_Дата. Дата - текущая дата запуска скрипта. В Unix команда date может предоставить вам информацию о текущей дате, но как я могу интегрировать это в имя выходного файла?
Обновить:
Попробовали методы Хита и Вфаула, они действительно работают. Однако, когда я ввел ту же команду в cronjob, я начал получать ошибку: / bin / sh: -c: line 0: неожиданный EOF при поиске соответствия `) '/ bin / sh: -c: line 1: syntax ошибка: неожиданный конец файла
Я знаю, что это вызвано выводом в файл с именем output _ $ (date +% Y% m% d), поскольку это единственное изменение, которое я сделал. Есть ли другой способ сделать это в cronjob?
myscript.sh > output_$(date +%Y%m%d)
Команда date делает то, что вы просили, но logrotate предназначен для того, что вы пытаетесь сделать, и будет держать вещи в чистоте ... На мой взгляд, этому стоит научиться.
./myscript.sh --options > output_$(date)
Но вы, вероятно, захотите использовать другой формат даты, чтобы в нем не было пробелов и мусора. Что-то вроде:
./myscript.sh --options > output_$(date +%Y%m%d.%H%M%S)
Если ваша оболочка не поддерживает синтаксис $ (), замените $(
и его соответствие )
каждый с "`
"(обратная кавычка).
./myscript.sh --options> output _ $ (дата)