分析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