如何获得本月的最后一天 Shell Scripting

Ora*_*tos 2 unix linux shell ubuntu

我试图获得本月或上个月的最后一天,我用来解决这个“问题”的方法是检查:

if [ $DAY -eq 1 ]; then
    code here;
fi
Run Code Online (Sandbox Code Playgroud)

如果一天是 1,那么它说我在新的一个月,所以我也需要做备份。

例如,你们知道如果今天是“1 月 31 日”月份的最后一天,我该如何检查???

谢谢!!!!

bru*_*rey 9

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

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

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

请记住,它date可以输出您想要的任何格式(以 开头的参数+)。

date --date="$(date +%Y-%m-01) +1 month -1 day" '+%F'
2019-01-31
Run Code Online (Sandbox Code Playgroud)

查看man date更多信息或更多信息info '(coreutils) date invocation'


use*_*001 5

一种方法是使用 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
Run Code Online (Sandbox Code Playgroud)


Der*_*ğlu 5

这给你上个月的最后一天

date -d "-$(date +%d) days -0 month"
Run Code Online (Sandbox Code Playgroud)

这给你当月的最后一天

date -d "-$(date +%d) days +1 month"
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)