Shell练习(十三)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell练习(十三)相关的知识,希望对你有一定的参考价值。
习题1:格式化输出
要求:输入一串随机数字,然后按千分位输出。比如输入数字串为“123456789”,输出为123,456,789
#/bin/bash # date:2018年3月15日 read -p "Please input a long number:" num v=`echo $num|sed 's/[0-9]//g'` if [ -n "$v" ] then echo "please input a number." exit 1 fi echo $num|sed -r '{:number;s/([0-9]+)([0-9]{3})/\1,\2/;t number}'
习题2:找出活动ip
要求:写一个shell脚本,把192.168.0.0/24网段在线的ip列出来。思路: for循环, 0.1 — 0.254 依次去ping,能通说明在线。
参考答案:
#/bin/bash # date:2018年3月15日 ips="192.168.139." for i in `seq 1 254` do ping -c 2 $ips$i > /dev/null 2>/dev/null if [ $? == "0" ] then echo "$ips$i is online" else echo "$ips$i is not online." fi done
习题3:日志归档
要求:类似于日志切割,系统有个logrotate程序,可以完成归档。但现在我们要自己写一个shell脚本实现归档。
举例: 假如服务的输出日志是1.log,我要求每天归档一个,1.log第二天就变成1.log.1,第三天1.log.2, 第四天 1.log.3 一直到1.log.5
参考答案:
#/bin/bash # date:2018年3月15日 function lf() { [ -f $1 ]&& rm -f $1 } for i in `seq 5 -1 2` do i2=$[$i-1] lf /data/1.log.$i if [ -f /data/1.log.$i2 ] then mv /data/1.log.$i2 /data/1.log.$i fi done lf /data/1.log.1 mv /data/1.log /data/1.log.1
以上是关于Shell练习(十三)的主要内容,如果未能解决你的问题,请参考以下文章