Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在linux中,如何读取开始日期和结束日期之间的所有日期_Linux_Bash - Fatal编程技术网

在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