码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2018-02-14 11:45:51      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:行数据   null   false   turn   $1   exit   总结   $?   字节   

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日志)

标签:行数据   null   false   turn   $1   exit   总结   $?   字节   

原文地址:http://blog.51cto.com/11726212/2071631

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!