统计全年的一个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 |