bash shell日期解析,从特定日期开始并循环遍历每个月的每一天

Joe*_*ein 12 bash shell scripting

我需要从一天开始创建一个bash shell脚本,然后循环每个后续日格式化输出为%Y_%m_d

我想我可以提交一个开始日,然后提交另一个参数天数.

我的问题/问题是如何设置DATE(现在不是),然后添加一天.

所以我的输入是2010_04_01 6

我的输出是

2010_04_01
2010_04_02
2010_04_03
2010_04_04
2010_04_05
2010_04_06
Run Code Online (Sandbox Code Playgroud)

eRa*_*cal 20

[radical@home ~]$ cat a.sh 
#!/bin/bash

START=`echo $1 | tr -d _`;

for (( c=0; c<$2; c++ ))
do
    echo -n "`date --date="$START +$c day" +%Y_%m_%d` ";
done
Run Code Online (Sandbox Code Playgroud)

现在,如果您使用params调用此脚本,它将返回您想要的内容:

[radical@home ~]$ ./a.sh 2010_04_01 6
2010_04_01 2010_04_02 2010_04_03 2010_04_04 2010_04_05 2010_04_06
Run Code Online (Sandbox Code Playgroud)


小智 12

非常基本的bash脚本应该能够这样做:

#!/bin/bash 
start_date=20100501
num_days=5
for i in `seq 1 $num_days`
do 
    date=`date +%Y/%m/%d -d "${start_date}-${i} days"`
    echo $date # Use this however you want!
done
Run Code Online (Sandbox Code Playgroud)

产出:
2010/04/30
2010/04/29
2010/04/28
2010/04/27
2010/04/26


Tom*_*Tom 6

注意:这里的解决方案中没有一个适用于OS X.例如,你需要这样的东西:

日期-v-1d +%Y%m%d

那将是昨天为你打印出来的.或者当然还有下划线:

日期-v-1d +%Y_%m_%d

因此,考虑到这一点,您应该能够使用此命令调整这些示例中的一些循环.-v选项将允许您添加或减去天,分,秒,年,月等.-v + 24d将添加24天.等等.