循環控制及狀態返回值的應用實踐(分析apache日誌)
阿新 • • 發佈:2018-02-14
循環語句 ns3 總結 字段 順序 awk 字節數 shell 訪問日誌 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日誌)