shell脚本编写遇到的问题--时间格式化

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值