循环控制及状态返回值的应用实践(分析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