AIX中的打印日期范围

时间:2016-07-25 15:04:22

标签: shell date ksh aix

我正在尝试在AIX中打印日期范围。我无法在AIX中正确使用'date'。我已经尝试了Stack溢出中建议的一些解决方案。没有任何效果。请在下面找到错误和代码。 我无法下载'GNU'。

#!/bin/ksh
startdate=20141030
enddate=20141120

loop_date=$startdate

let j=0
while [ "$loop_date" -ne "$enddate" ]; do
        loop_date=`date   -j -v+${j}d  -f "%Y%m%d" "$startdate" +"%Y%m%d"`
        echo $loop_date
        let j=j+1
done

错误: 日期:非法选项 - j 用法:日期[-u] [+字段描述符]

1 个答案:

答案 0 :(得分:2)

试试这个;

#!/bin/ksh
startdate=$1
enddate=$2
loop_date=$startdate
currentdate=`date +%Y%m%d`

let j=0;

if [[ $startdate -lt $currentdate && $enddate -lt $currentdate ]];then
loop_date=$currentdate
while [[ "$loop_date" -gt "$startdate" ]]; do
loop_date=$(TZ=CST+$j date +%Y%m%d)
   if [[ $loop_date -le $enddate ]];then
      echo $loop_date
   fi
let j=j+24
done
fi

if [[ $startdate -gt $currentdate && $enddate -gt $currentdate ]];then
while [[ "$loop_date" -lt "$enddate" ]]; do
loop_date=$(TZ=CST-$j date +%Y%m%d)
   if [[ $startdate -le $loop_date ]];then
      echo $loop_date
   fi
let j=j+24
done
fi


user@host:/tmp:>ksh test.sh 20150630 20150705 
20150705
20150704
20150703
20150702
20150701
20150630
user@host:/tmp:>ksh test.sh 20170630 20170705 
20170630
20170701
20170702
20170703
20170704
20170705