shell中如何获取以当天日期开始的前11个月最后一天的日期

shell中如何获取以当天日期开始的前11个月最后一天的日期,第1张

date -d" -11 month " +%Y%m%d

获取到当天的日期

然后再判断月份,如果是1,3,5,7,8,10,12

那么把日期替换成31

如果是4,6,9,11

那么把日期替换成30

如果是2

还得去判断是否为闰年

是闰年就29

不是就28

1,$HOME/getdatesh,内容如下:

#!/bin/bash

DATE=/bin/date

$DATE +"%F %T" >>$HOME/date_loglog

2 $HOME/call_gdsh,内容如下

#!/bin/bash

SH=/bin/sh

${SH} $HOME/getdatesh

[seesea@CU ~]$ date +%Y%m

201307

[seesea@CU ~]$ date -d"next month" +%Y%m

201308

[seesea@CU ~]$ date -d"next month" +%Y%m01

20130801

lz 试试楼下的代码在 12 月份的情况就知道谁的对谁的错了。看来正确的答案只有管理员才有眼光选上啊。

1、不要用date关键词做参数,容易绕进去,获取到星期几后减1((week--))

%u day of week (17); 1 is Monday

%w day of week (06); 0 is Sunday

2、 cat dsh

#!/bin/sh

if [ -z $1 ];then

echo "Usage $0 20180101";

exit 0;

fi

d1=$1

week=`date -d $d1 +%w`

((week--))

d3=`date -d ${d1}" -${week} days" +%Y%m%d`

echo input is:$d1

echo monday is :$d3

3、例如:

/dsh 20180208

input is:20180208

monday is :20180205

/dsh 20180201

input is:20180201

monday is :20180129

24小时,就是相差一天,所以变化的只有天数

我这里提供一个笨方法:

用date获取当前日期和时间,格式化成你的文件命名格式,用下面的字符串截取方法获得天数:

${varible:n1:n2}:截取变量varible从n1到n2之间的字符串

天数减1后,重新组织成新的字符串。

用循环比较 ls 出来的文件名与这个字符串。

代码试过后再放上来。

以上就是关于shell中如何获取以当天日期开始的前11个月最后一天的日期全部的内容,包括:shell中如何获取以当天日期开始的前11个月最后一天的日期、Shell脚本获取系统时间 Linux程序、linux shell 如何根据当前日期获取下月日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10217858.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存