分析apache访问日志,把日志每行的访问字节数对应的字段数字相加,计算访问总量。

#!/bin/bash
sum=0
exec < $1

while read line

do
  aa=`echo $line | awk '{print $10}'`
  expr $aa + 10 > /dev/null
  a=$?
  if [ $a -ne 0 ]; then
    continue
  fi
  sum=$(($sum+$aa))
done

echo $sum
~

这个问题主要考察while循环按行读文件的方式。

第一种:采用exec读取文件,然后进入循环处理

exec < $1              #$1表示的是文件名
while   read  line
do
  echo  $line
done

第二种:使用cat读取文件内容,然后通过管道进入while循环处理。

cat  /etc/httpd/logs/access.log | while  read  line
do
  处理命令
done

第三种:

while  read   line
do
  cmd
done<file