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
注意:这里的解决方案中没有一个适用于OS X.例如,你需要这样的东西:
日期-v-1d +%Y%m%d
那将是昨天为你打印出来的.或者当然还有下划线:
日期-v-1d +%Y_%m_%d
因此,考虑到这一点,您应该能够使用此命令调整这些示例中的一些循环.-v选项将允许您添加或减去天,分,秒,年,月等.-v + 24d将添加24天.等等.