Bash 在一个月的最后一天返回

Bash 在一个月的最后一天返回,bash,shell,unix,scripting,Bash,Shell,Unix,Scripting,我试图返回MONTHNO变量中指定月份的最后一天 因此,当MONTHNO指向二月时,例如,假设我们在四月YYYYMMDD应该返回20150228 MONTHNO=`date -d "2 month ago" "+%m"` YEAR=`date +%Y` YYYYMMDD=`date +%Y%m%d` 谢谢您只需几步就可以到达那里。这里的诀窍是在你感兴趣的一个月后的一个月初,然后在某一天返回: m=$(date -d "1 month ago" "+%m") y=$(date "+%Y") te

我试图返回MONTHNO变量中指定月份的最后一天

因此,当MONTHNO指向二月时,例如,假设我们在四月YYYYMMDD应该返回20150228

MONTHNO=`date -d "2 month ago" "+%m"`
YEAR=`date +%Y`
YYYYMMDD=`date +%Y%m%d`

谢谢

您只需几步就可以到达那里。这里的诀窍是在你感兴趣的一个月后的一个月初,然后在某一天返回:

m=$(date -d "1 month ago" "+%m")
y=$(date "+%Y")
temp=$(date -d "${y}${m}01")
d=$(date -d "$temp - 1 day" "+%Y%m%d")
由于我们目前在3月份,因此得出以下结果:

20150131
当然,可以组合
m
y
变量,为您节省一个步骤:

ym=$(date -d "1 month ago" "+%Y%m")
temp=$(date -d "${ym}01")
您甚至可以将调用嵌套到
date
(尽管可能以牺牲易读性为代价),以便“一步到位”:

d=$(date -d "$(date -d "$(date -d "1 month ago" "+%Y%m" )01") - 1 day" "+%Y%m%d")