根据关联使用以下命令可以查看最后一天date
:
$ date -d "-$(date +%d) days -1 month"
Wed May 31 21:20:31 CEST 2017
我的问题是,我怎样才能得到仅有的 天并将其分配给一个变量,我稍后将使用该变量,例如
awk '{day=system("date -d \"-$(date +%d) days -1 month\")"; print day)}'
例如打印天只会输出31。我知道日期格式需要格式化,但我不明白如何仅打印最后一天。
或者如果有另一种更简单的方法awk
也可以完成工作。
编辑 一些非常肮脏的解决方法..
$ awk '{a=system("date -d \"-$(date +%d) days -1 month\"| cut -f 3 -d \" \""); }END{print a}'
31
有人有更简单/更干净的想法吗?
答案1
最后一天当前的月份应该是:
$ date -d "$(date +%Y-%m-01) +1 month -1 day"
Mon Jul 31 00:00:00 CEST 2017
我最短的:
awk '{a=system("date -d \"$(date +%Y-%m-01) +1 month -1 day\" +%d")}END{print a}'
答案2
只需使用格式字符串进行外部调用date
:
$ date -d "-$(date +%d) days +1 month" +%d
31
答案3
lastday=$(cal 07 2017|awk 'END{print day};{if (NF>0){day=$NF}}')
这会提取日历最后一行的最后一天值,忽略空白行。
稍微短一点的是:
lastday=$(cal 07 2017|awk 'END{print day};{NF>0 && day=$NF}')
答案4
尝试这个:
month=$(cal 07 2017)
lastday=${month: -24: 2}
echo $lastday
我使用日历函数加载“月”变量以及该月的所有天数,然后选取最后两个字符。该示例针对的是 2017 年 7 月,但它适用于 和 月/年。