bash脚本改进
上次的博客强行传递的参数为20200101 20200131 这样的不跨月的参数,在使用中还是很不方便.
如果想跨月呢?这就需要涉及bash中时间格式化的知识点了.
1,时间格式化
关于概念性的东西,可以参考这个链接,写的很好了
参考链接:https://blog.csdn.net/classhao1/article/details/8182733
#等号两边不能有空格,之前错误一直出在这里
yesterday=`date -d last-day +%Y-%m-%d`
echo $yesterday
curday=`date +%Y-%m-%d`
echo $curday
通过上述脚本可以获得时间;可见bash脚本支持时间格式
那么输入一个参数可以转化为date吗?当然可以.
#! /bin/sh
today=$1
today2=`date -d "0 day $today" +%Y-%m-%d`
echo ${today2}
一定要注意,这里的echo的today2是变量,不能直接echo today2,需要用${},表明传递的是变量
同时要注意
`date -d "0 day $today" +%Y-%m-%d`,`xx +%`
是整体框架,xx是date,+%是格式;date -d ""是将传入的today转化成date数据类型
2,循环取日期
那么怎么可以获得sday到eday之间的日期呢?同样需要利用循环.
参考链接2.
这里利用了时间这样一种数据类型的内置特点;
#是获取变量today
`date -d "0 day $today" +%Y-%m-%d`
#是获取变量的前一天
`date -d "-1 day $today" +%Y-%m-%d`
#是获取变量的后一天
`date -d "1 day $today" +%Y-%m-%d`
下面是我最后的代码:
while [[ $sday -le $eday ]]
do
echo ${sday}
today=`date -d "0 day $sday" +%Y-%m-%d`
echo ${today}
python aaa.py today
sday=`date -d "1 day $today" +%Y%m%d`
done
3,参考链接
参考链接:
[1]:https://blog.csdn.net/classhao1/article/details/8182733
[2]:https://blog.csdn.net/kwu_ganymede/article/details/50395000?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161251559416780262580665%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=161251559416780262580665&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-7-50395000.pc_search_result_cache&utm_term=bash+%25E6%25A0%25BC%25E5%25BC%258F%25E5%258C%2596%25E6%2597%25B6%25E9%2597%25B4