在linux下有时候会需要得到两个日期之间的所有日期,作为变量进行处理,例如两个日期之间的所有日期都分别生成一个用日期命名的文件夹。以下shell脚本循环输出两个指定日期之间的所有日期(包括两个输入日期)。

#!/bin/bash
  
#以YYYYMMDD格式输出大于等于第一个输入日期,小于等于二个输入日期的所有日期
  
begin_date=$1  
end_date=$2
  
while [ "$begin_date" != "$end_date" ]  
do 
echo $begin_date  
let begin_date=`date -d "-1 days ago ${begin_date}" +%Y%m%d` 
done
echo $end_date

调用方式方式为: sh genedate.sh YYYYMMDD YYYYMMDD。

测试结果如下:


这里关键在于date的使用,总结linux下date的一些常见使用方法如下:

date [选项]... [+格式]
date -d +%Y%m%d                         输出格式样例:20180102
date -d +%F                                     输出格式样例:2018-02-01
date -d '+%F %A'                             输出格式样例:2018-02-10 星期六
date -d '+%F %w'                             输出格式样例:2018-02-10 6
date -d '-n days ago' +%Y%m%d    YYYYMMDD格式今日前第n天的日期

Logo

更多推荐