Как я могу получить последний день в месяц Shell Scripting - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь получить последний день в текущем месяце или последний месяц, который я использую для обхода этой «проблемы»:

if [ $DAY -eq 1 ]; then
    code here;
fi

Если день 1, значит, я нахожусь в новом месяце, поэтому мне нужно также создать резервную копию.

Ребята, вы хоть представляете, как я могу сделать проверку, если сегодня последний день в месяце, например, "31 января" ???

Спасибо !!!!

Ответы [ 3 ]

0 голосов
/ 21 января 2019

Это дает вам последний день предыдущего месяца

date -d "-$(date +%d) days -0 month"

и это дает вам последний день текущего месяца

date -d "-$(date +%d) days +1 month"

if [[ $(date  +%d%m%Y -d "-$(date +%d) days +1 month") != $(date +%d%m%Y) || $(date  +%d%m%Y -d "-$(date +%d) days -0 month") != $(date +%d%m%Y)  ]]
    echo "Today is NOT the last day of the month"
else
    echo "Today is the last day of the month"
fi
0 голосов
/ 21 января 2019

Получение последнего дня для месяца иногда сложно, потому что, конечно, не все месяцы имеют одинаковое число дней.

Один из способов сделать это - получить первый день этого месяцадобавьте к этому месяц (чтобы получить первый день следующего месяца), а затем вычтите день.

date --date="$(date +%Y-%m-01) +1 month -1 day"
thu jan 31 00:00:00 -07 2019

И помните, что date может выводить любой формат, который вы хотите (аргумент, начинающийся с +).

date --date="$(date +%Y-%m-01) +1 month -1 day" '+%F'
2019-01-31

См. man date для получения дополнительной информации или info '(coreutils) date invocation' для получения дополнительной информации.

0 голосов
/ 21 января 2019

Один из способов - использовать дату GNU:

if [[ $(date -d "+1 day" +%m) != $(date +%m) ]]
then
    echo "Today is the last day of the month"
else
    echo "Today is NOT the last day of the month"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...