Назад | Перейти на главную страницу

Как автоматически сгенерировать файл из скрипта с текущей датой в качестве имени файла?

У меня есть сценарий оболочки, который генерирует некоторые выходные данные. Вывод записывается в файл. В моем задании 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 _ $ (дата)