在 Unix 中查找给定年份和月份的开始和结束日期
Finding start and end date from given year and month in Unix
我有一个名为 myScript
的 unix 脚本,其中两个参数应以 YYYYMM
格式传递,指示脚本的开始月份和结束月份。
在脚本中,根据参数,我需要在第一个参数中计算月份的开始日期,在第二个参数中计算月份的结束日期。
我写了下面的代码:
startYr=`expr substr 1 4`
startMonth=`expr substr 5 2`
startDate=`cal $startMonth $startYr | grep . | fmt -1 | tail -1`
endYr=`expr substr 1 4`
endMonth=`expr substr 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和$2,而不是$2和$3。此外,对于开始日期,您应该执行 sed -n 10p
以获得第 10 行,从日期开始的地方。
我有一个名为 myScript
的 unix 脚本,其中两个参数应以 YYYYMM
格式传递,指示脚本的开始月份和结束月份。
在脚本中,根据参数,我需要在第一个参数中计算月份的开始日期,在第二个参数中计算月份的结束日期。
我写了下面的代码:
startYr=`expr substr 1 4`
startMonth=`expr substr 5 2`
startDate=`cal $startMonth $startYr | grep . | fmt -1 | tail -1`
endYr=`expr substr 1 4`
endMonth=`expr substr 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和$2,而不是$2和$3。此外,对于开始日期,您应该执行 sed -n 10p
以获得第 10 行,从日期开始的地方。