循环控制及状态返回值的应用实践(分析apache日志)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了循环控制及状态返回值的应用实践(分析apache日志)相关的知识,希望对你有一定的参考价值。

12.1 break,continue,exit,return的区别和对比


break和continue在条件语句以及循环语句(for,while,if等)中用于控制程序的走向;exit用户终止所有语句并退出当前脚本,除此之外,exit还可以返回上一次程序或命令的执行状态值给当前shell;return类似于exit,只不过return仅用在函数返回值函数执行的状态值。

break n   如果省略n,则表示跳出整个循环,n表示跳出循环的层数

continue n  如果省略n,则表示跳过本次循环,省略本次省略的剩余代码,进入循环的下一次循环,n表示退出第n层继续循环

exit n  推出当前的shell程序,n为上一层程序执行的返回值,n也可以省略,在下一个shell里通过"$?"接收exit的n值

return n 用于函数里作为函数的返回值,以判断函数执行是否正确


12.2  break,continue,exit功能(总结上面的)

在while和for中

break用于退出当前循环语句,以为着循环结束

continue用于退出当前的循环层次,继续下次循环

exit用户直接退出脚本,不在执行shell

开发shell脚本为服务器临时配置多个ip,ip的范围是192.168.116.150-192.168.116.160,但是不创建192.168.116.155

#!/bin/bash
#ip:192.168.116.150-192.168.116.160

a=150
for i in `seq 10`
do
  if [ $a -eq 155 ]; then
    ((a++))
    continue

  fi
  ip=192.168.116."$a"

  ifconfig ens33:$i $ip netmask 255.255.255.0 up
  ((a++))

done

分析apache访问日志,把日志中的每行数据的访问字节数所对应的字段数字相加,计算出总的访问量,给出实现顺序,请用while循环结构实现。

#!/bin/bash
#logfile=/var/log/httpd/access_log
sum=0
exec <  /var/log/httpd/access_log
while read line
do
#  sum=0
  b=`echo "$line" | awk '{print $10}'`
  a=$?
  expr $a + 5 >/dev/null
  if [ $? -eq 0 ]; then
   sum=$(($sum+$b))
  fi
done
echo $sum


以上是关于循环控制及状态返回值的应用实践(分析apache日志)的主要内容,如果未能解决你的问题,请参考以下文章

强化学习7日打卡营-世界冠军带你从零实践--基于表格型方法的 RL

关于数据库“状态”字段设计的思考与实践

Apache的配置与应用(构建web日志分割及AWStats分析系统)

Linux性能优化实践 - 传输层基本原理及故障分析

一篇文章读懂:WebSocket分析及实践

shell脚本之十:while循环及应用实践