我的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
答案 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