大于 -gt (greater than)
小于 -lt (less than)
大于或等于 -ge (greater than or equal)
小于或等于 -le (less than or equal)
不相等 -ne (not equal)
方法一
#!/bin/bash
#倒序按天遍历日期
#传入遍历的开始时间和结束时间
startdate="$1"
enddate="$2"
#序列1-300,表示遍历300次,因为有结束时间的限制,所以实际上不会循环300次
for i in `seq 1 365`; do
#当开始时间小于结束时间时,直接结束脚本
if [[ $startdate -lt $enddate ]]; then
break
fi
echo $startdate
#每次执行后,使开始日期减一天,如果要正序,将下面-1换成+1即可,当然开始时间和结束时间也要换一下
startdate=$(date -d "$startdate -1 day" +%Y%m%d)
done
方法二
end_date=`date -d "yesterday" +%Y-%m-%d`
start_date=`date -d "30 days ago" +%Y-%m-%d`
end=`date -d "1 day ${end_date}" +%Y-%m-%d` # 日期自增
while [[ $start_date != $end ]]
do
echo $start_date
start_date=$(date -d "$start_date +1 day" +%Y-%m-%d)
done
start_date
取不到end_date
值,即最后输出的是[start_date,end_date)
,好像Shell里面并没有do…while这种循环,所以最好在循环之前,先做一步处理:
end=date -d "1 day ${end_date}" +%Y-%m-%d
# 日期自增