在linux中,如何读取开始日期和结束日期之间的所有日期
我想读取两个日期范围之间的所有日期,该范围包括开始日期和结束日期在linux中,如何读取开始日期和结束日期之间的所有日期,linux,bash,Linux,Bash,我想读取两个日期范围之间的所有日期,该范围包括开始日期和结束日期 input_start_date="2013-09-05" input_end_date="2013-09-10" START_DATE=$(date -I -d "$input_start_date") || exit -1 END_DATE=$(date -I -d "$input_end_date") || exit -1 d="$START_DATE" while [ "$d" <= "$EN
input_start_date="2013-09-05"
input_end_date="2013-09-10"
START_DATE=$(date -I -d "$input_start_date") || exit -1
END_DATE=$(date -I -d "$input_end_date") || exit -1
d="$START_DATE"
while [ "$d" <= "$END_DATE" ]; do
echo $d
d=$(date -I -d "$d + 1 day")
done
有人能帮我解决这个问题吗
预期产量
2013-09-05
2013-09-06
2013-09-07
2013-09-08
2013-09-09
2013-09-10
这个想法是对的,但您只是把运算符弄错了,
在awk中有点小的变化(由于没有测试数据,所以范围有点变化,只有预期的输出):
$awk'$0>=“2013-09-06”&&$0这里需要一个do-while循环,而bash没有提供。怎么样
date="$start_date"
while true; do
echo "$date"
[[ $date = "$end_date" ]] && break
date=$(date -d "$date + 1 day" "+%F")
done
不要使用所有的\u CAPS\u VAR\u名称——太容易错误地覆盖shell/系统变量
while [ "$d" != "$enddate" ]; do
start=2013-09-05
end=2013-09-10
while [[ $start < $end ]]
do
printf "$start\n"; start=$(date -d "$start + 1 day" +"%Y-%m-%d")
done
END=$(date -d "2013-09-10" +%s);
DATE=$(date -d "2013-09-05" +%s);
while [[ "$DATE" -le "$END" ]]; do date -d "@$DATE" +%F; let DATE+=86400; done
$ awk '$0>="2013-09-06" && $0<="2013-09-09"' file
2013-09-06
2013-09-07
2013-09-08
2013-09-09
date="$start_date"
while true; do
echo "$date"
[[ $date = "$end_date" ]] && break
date=$(date -d "$date + 1 day" "+%F")
done