计算月末日期特殊情况的第二天日期

时间:2015-12-23 22:38:26

标签: shell unix scripting

我正在编写一个脚本,该格式以YYYMMDD格式作为输入:

#!/bin/bash
check_dir () {
  d1=$2
  d2=$((d1+1))
  f1=`mktemp`
  f2=`mktemp`
  touch -d $d1 $f1
  touch -d $d2 $f2
  n=$(find $1 -mindepth 1 \( -name "*$d1*" \) -o \( -newer $f1 ! -newer $f2 \) | wc -l)
  if [ $n != $3 ]; then echo $1 "=" $n ; fi
  rm -f $f1 $f2
}

在此脚本中,d2=$((d1+1))计算从提供日期开始的第二天的日期,即d1。但是,如果日期是20151231,那么它将无法处理这种情况。有谁可以帮我解决如何处理这个异常?

gdate在我的平台上不起作用!!

1 个答案:

答案 0 :(得分:1)

使用GNU coreutils的date版本(即在Linux中使用):

$ date -d '20151231 +1 day' +'%Y%m%d'
20160101