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 如何根据当前日期获取下月日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)