关于date的shell脚本

因为工作需要,需要频繁的手工造数据,数据中的时间粒度需要为连续小时、天或月的数据,脚本中主要是date的用法,date命令虽然简单,但因时间格式多种多样,所以date的用法也变得繁多。我主要用到的是date ago,脚本比较简单就不加注释了,留作日后以备复习。

#!/bin/bash

hour=`date "+ %H:%M:%S"`
day=`date +%F`
month=`echo $day | cut -c 6-7`
nowtime=`date "+%Y-%m-%d %H:%M:%S"`
var=$2
filedir=$(cd $(dirname $0); pwd)
filename=$day.txt
file=$filedir/$filename

if [ $# -ne 2 ];
	then echo "usage:./data.sh day 2"
	exit
fi

if [ -f $file ];
	then rm -rf $file
fi


function day (){

	for((i=0;i<=var;i++));
	do
	dayago=`date -d "$i days ago" +"%Y-%m-%d %H:%M:%S"` 
	namedayago=`date -d "$i days ago" +%Y%m%d`
	echo "1|9916524|14780007|6|12|$dayago$hour|Eliana NELSON|1-67095-703-6|shanghai_songjiang|2" > $namedayago.txt
#	sed -i "s/`echo $day`/`echo $dayago`/g" $day.txt 
	done
}

function hour (){
	 for((i=0;i<=var;i++));
	do
	hourago=`date -d "$i hour ago" +"%Y-%m-%d %H:%M:%S"`	
        namehourago=`date -d "$i hour ago" +%H%M%S`
        echo "1|9916524|14780007|6|12|$hourago|Eliana NELSON|1-67095-703-6|shanghai_songjiang|2" > $namehourago.txt
        done

}

function month (){
	for((i=0;i<=var;i++));
        do
        monthago=`date -d "$i month ago" +"%Y-%m-%d %H:%M:%S"`  
        namemonthago=`date -d "$i month ago" +%Y%m`
        echo "1|9916524|14780007|6|12|$monthago|Eliana NELSON|1-67095-703-6|shanghai_songjiang|2" > $namemonthago.txt
        done

}
case $1 in 
	"day")
		day
		;;
	"hour")
		hour
		;;
	"month")
		month
		;;
esac
exit 0


猜你喜欢

转载自blog.csdn.net/weixin_43639512/article/details/84255864