因为工作需要,需要频繁的手工造数据,数据中的时间粒度需要为连续小时、天或月的数据,脚本中主要是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