我希望按照日历运行从start_date到end_date的for循环。格式如下:YYYYMMDD
例如:start_date:20140226
,end_date:20140303
应该打印20140226, 20140227, 20140228, 20140301, 20140302, 20140303
。
谢谢!
答案 0 :(得分:2)
尝试类似
的内容#!/bin/bash
start=$(date -d "$1" '+%Y%m%d' 2>/dev/null)
end=$(date -d "$2" '+%Y%m%d' 2>/dev/null)
[[ $start != "" && $end != "" ]] || exit 0
[[ $(date -d "$start" +%s) -le $(date -d "$end" +%s) ]] || exit 0
while :; do
echo "$start"
[[ $start -eq $end ]] && exit 0
start=$(date -d "$start +1days" '+%Y%m%d')
done
e.g。
> ./abovescript 20140226 20140303
20140226
20140227
20140228
20140301
20140302
20140303
答案 1 :(得分:0)
您可以使用-gt编写while循环,并使用以下内容修改从start_date开始的变量:
$start_date=$(date -d "$start_date -1days")
答案 2 :(得分:0)
for i in $(seq 1 20); do date -v-"$i"d +%Y%m%d; done
将20调整为您想要的过去多天。但是,并不完全处理您的开始和结束日期要求,而是从昨天而不是任意日期开始。可能会让你开始。