我如何获得本月Shell脚本编写的最后一天

时间:2019-01-21 17:57:26

标签: linux shell ubuntu unix

我正在尝试获取本月的最后一天,或者最后一个月,我用来解决此“问题”的方法是通过以下方式进行检查:

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

如果日期是1,则表示我在新的月份,因此我也需要进行备份。

例如,如果今天是月份“ 1月31日”的最后一天,你们有什么想法吗?

谢谢!!!!

3 个答案:

答案 0 :(得分:3)

获取一个月的最后一天有时很棘手,因为并非所有月份的课程天数都相同。

一种方法是获取本月的第一天,在该月的第一天加上一个月(以获取下个月的第一天),然后减去一天。

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'

答案 1 :(得分:2)

这给您上个月的最后一天

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

答案 2 :(得分:1)

一种方法是使用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