统计全年的一个shell脚本
有时候需要做一些统计操作,例如统计今年以来分天的某个操作,可以写出一个伪调用
for everyday in this year
process_program everyday
其中everyday为参数。
问题来了,假定现在有一个脚本process_program可以接受一天的参数,如果计算今年的呢?
尝试用下面的shell脚本吧,全手工雕琢,作为自己的统计利器了。
#!/bin/bash
datefile="datefile"
rm -f $datefile
function importOneMonthLog()
{
start_day=1
year=$1
month=$2
total_day_num=$3
while [ $start_day -le $total_day_num ]
do
if [ $start_day -lt 10 ];then
#echo "Download ${year}${month}0${start_day} log"
echo ${year}${month}0${start_day} >> $datefile
#./importApiaccessLog-main.py ${year}${month}0${start_day}
else
#echo "Download ${year}${month}${start_day} log"
echo ${year}${month}${start_day} >> $datefile
#./importApiaccessLog-main.py ${year}${month}${start_day}
fi
start_day=`expr $start_day + 1`
done
}
function importAllLogs()
{
# 能够符合计算的log月份
MOST_BEFORE_YEAR_MONTH="201202" ####### 这里改起始月份
n=1
LAST_YEAR_MONTH=`date -d '1 months ago' +%Y%m`
while [ $LAST_YEAR_MONTH -gt $MOST_BEFORE_YEAR_MONTH ]
do
LAST_YEAR_MONTH=`date -d ''$n' months ago' +%Y%m`
LAST_YEAR=`date -d ''$n' months ago' +%Y`
LAST_MONTH=`date -d ''$n' months ago' +%m`
LAST_DAY_NUM=`cal $LAST_MONTH $LAST_YEAR | xargs | awk '{print $NF}'`
#echo "Start to download ${LAST_YEAR}${LAST_MONTH} all logs"
importOneMonthLog ${LAST_YEAR} ${LAST_MONTH} ${LAST_DAY_NUM}
#echo "End download ${LAST_YEAR}${LAST_MONTH} all logs"
n=`expr $n + 1`
done
NOW_YEAR_MONTH=`date +%Y%m`
NOW_YEAR=`date +%Y`
NOW_MONTH=`date +%m`
NOW_DAY_NUM=`date -d "1 day ago" +%d`
#echo "Start to download this month's all logs"
importOneMonthLog ${NOW_YEAR} ${NOW_MONTH} ${NOW_DAY_NUM}
#echo "End download this month's all logs"
}
importAllLogs
sort $datefile > ${datefile}.sort
while read line
do
./process_program.py $line ##############统计脚本调用
# echo $line
done < ${datefile}.sort
rm $datefile
rm ${datefile}.sort |