date 日期比较

在做数据补齐的时候,我们往往不想自己手动去操作..

那么就交给脚本吧.. 这里提一下如何利用date来做一个操作

1.  date +”%Y%m%d” -d”1 days ago”

可以昨天这个日期的表达式,格式为yyyymmdd

2. date + “%s” -d “1 days”

可以得到明天这个日期的表达式,格式为时间戳(秒)

有这两个命令其实已经足够我们去做一个到目前为止时间的一个循环了:

sDate=`date +”%Y%m%d” -d”${yourinputsourceday}”`  #一个脚本应该起始的时间

eDates=`date +”%s” -d”1 days ago” ` #到昨天的一个时间戳,用于比较。一般我们做分析时,今天会对昨天一整天的数据进行统计分析。

while [ `date +”%s” -d”${sDate}”` -le ${eDates} ]

do

./yourtaskfile.sh $sDate   #你的脚本需要接受一个补齐数据的日期

sDate=`date +”%Y%m%d” -d”${sDate} 1 days”`  #+1天

done

至此,就可以完成一个数据补齐的操作脚本了,而不用你手工一天一天去跑..顺便提一下,还可以判断是否与起始日期相差一周/两周/。。。反正是一个周期,可以用来跑一些一周需要执行一次的脚本~

原理同上:

sDates=`date +”%s” -d”${sDate}`

[ $(((eDates-sDates)/3600/24 % 7)) -eq 0 ]

就可以啦。

 

” , “”, “在shell中的区别

马上要写shell脚本了,趁着空review一下,明天开始上手,一个字,就是干!哈哈

”会忽略掉里面所有的特殊符号,比如$,\这些,我们可以测试一下:

定义一个 tempvar=1

[root@localhost tmp]# echo ‘$tempvar’

$tempvar

而“”会保存$, \这些符号:

[root@localhost tmp]# echo “$tempvar”

1

那么,“的作用呢?

反引号位 (`) 位于键盘的Tab键的上方、1键的左方。注意与单引号(‘)位于Enter键的左方的区别。
在Linux中起着命令替换的作用。命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置。
如下,shell会执行反引号中的date命令,把结果插入到echo命令显示的内容中。
[root@localhost tmp]# echo The date is `date`

the data is Mon Jul 13 19:21:14 HKT 2015