码迷,mamicode.com
首页 > 系统相关 > 详细

Shell练习(十三)

时间:2018-03-15 17:02:34      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:linux   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练习(十三)

标签:linux   shell   

原文地址:http://blog.51cto.com/11924224/2087236

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!