Я хотел бы получить номер понедельника текущей недели с помощью сценария bash в Ubuntu Linux.
Пример и информация: прошлый понедельник (30 октября) был пятым понедельником октября, а среда была первым днем и, очевидно, первой средой ноября. Сценарий, который я пытаюсь создать, будет проверять, есть ли в процедуре резервного копирования правильный недельный носитель. У меня есть недели 1-5, доступные для СМИ. Скрипт запустится и проверит номер недели понедельника на текущей неделе. На этой неделе он проверит и обнаружит, что понедельник был пятым понедельником, то есть СМИ пятой недели должны присутствовать. На следующей неделе он проверит и обнаружит, что это первый понедельник, поэтому СМИ недели 1 должны присутствовать.
Скрипт будет запускаться ежедневно (пн-пт) и ссылаться только на номер недели понедельника. Имеется в виду понедельник, неделя 1, неделя 2, 3, 4, а в некоторые месяцы 5.
У меня есть команда даты с некоторой арифметикой, которая дает мне номер недели месяца, однако она будет делать это только на основе текущего дня. Это так:
$((($(date +%-d)-1)/7+1))
Надеюсь, я объяснил это достаточно хорошо, но это не слишком запутало.
Любая помощь будет оценена. Спасибо!
Мы можем сказать date
чтобы вывод был основан на конкретной дате, а не на сегодняшнем, с аргументом -d. Допустимая строка формата - «последний понедельник», поэтому нам нужно только проверить, сегодня ли понедельник:
$ if [ "$(date +%A)" == "Monday" ]; then Monday="today"; else Monday="last Monday"; fi; echo $((($(date -d "$Monday" +%-d)-1)/7+1))
5