如何使用korn shell获取上个月的第一天/最后一天

时间:2014-04-25 19:12:07

标签: ksh

我的ksh版本不允许日期-d。

当前月份是1月时,波纹管代码有问题。

#!/bin/ksh

yy=`date +%Y`
mm=`date +%m-1|bc`

[ $mm -lt 1 ] && (mm=12;yy=`expr $yy - 1`)
[ $mm -le 9 ] && mm="0$mm"
getcal=`cal $mm $yy`
last_dd=`echo $getcal|awk '{print $NF}'`
dd1=`echo $getcal|awk '{print $10}'`

first_dd="0$dd1"

echo $yy$mm$last_day
echo $yy$mm$first_day

1 个答案:

答案 0 :(得分:1)

您正在使用子shell:您所做的任何变量都不会在子shell退出时继续存在:

$ m=5; (m=10); echo $m
5

使用其他分组构造

[ $mm -lt 1 ] && { mm=12; ((yy -= 1)); }

如果你有GNU日期,你可以这样做:

$ first_of_this_month=$(date "+%Y-%m-01")
$ date -d "$first_of_this_month - 1 day" "+%Y-%m-%d"
2014-03-31
$ date -d "$first_of_this_month - 1 month" "+%Y-%m-%d"
2014-03-01