在Unix中查找给定年份和月份的开始和结束日期

时间:2015-03-06 03:34:28

标签: date unix

我有一个名为myScript的unix脚本,其中两个参数应以YYYYMM格式传递,表示脚本的开始月份和结束月份。

在脚本内部,根据参数,我需要计算第一个参数中月份的开始日期和第二个参数中月份的结束日期。

我写了下面的代码:

startYr=`expr substr $2 1 4`
startMonth=`expr substr $2 5 2`
startDate=`cal $startMonth $startYr | grep . | fmt -1 | tail -1`

endYr=`expr substr $3 1 4`
endMonth=`expr substr $3 5 2`
endDate=`cal $endMonth $endYr | grep . | fmt -1 | tail -1`

export eomStartDate=$startYr-$startMonth-$startDate
export eomEndDate=$endYr-$endMonth-$endDate

echo "START DATE: $eomStartDate"
echo "END DATE: $eomEndDate"

但是,在以上脚本上运行:

myScript 201401 201412

我得到的结果是:

START DATE: 2014-12-31
END DATE: --31

我错过了什么?我正在使用Korn Shell。

感谢阅读!

1 个答案:

答案 0 :(得分:0)

参数应为1美元和2美元,而不是2美元和3美元。此外,对于开始日期,您应该sed -n 10p来获取第10行,从日期开始。