day 19

例题36

[root@iZwz96qzfgxh9l2rk7esxnZ xiti]# vim 36.sh
#一个文本文档中只有一个数字的行给打印出来
#!/bin/bash
while read line
do
    n=`echo $line |sed 's/[^0-9]//g'|wc -L`
    if [ $n -eq 1 ]
    then
        echo $line
    fi
done < 1.txt
~                   

例题37

[root@iZwz96qzfgxh9l2rk7esxnZ xiti]# vim 37.sh
# 假如服务的输出日志是1.log,要求每天归档一个,1.log第二天就变成1.log.1,第三天1.log.2, 第四天 1.log.3  一直到1.log.5
#!/bin/bash
cd /data/logs
log=1.log
mv_log()
{
    [ -f $1 ] && mv $1 $2
}
[ -f 1.log.5 ] && rm -f 1.log.5
for i in `seq 4 -1 1`
do 
    j=$[$i+1]
    mv_log $log.$i $log.$j
done
mv 1.log 1.log.1

例题38

[root@iZwz96qzfgxh9l2rk7esxnZ xiti]# vim 38.sh
#写一个shell脚本,把192.168.0.0/24网段在线的ip列出来
#!/bin/bash
for i in `seq 1 254`
do 
    if ping -c 2 -W 2 192.168.0.$i >/dev/null 2>/dev/null
    then
        echo "192.168.0.$i 是通的."
    else
        echo "192.168.0.$i 不通."
    fi
done
~    

例题39

[root@iZwz96qzfgxh9l2rk7esxnZ xiti]# vim 39.sh
#检查指定的shell脚本是否有语法错误,若有错误,首先显示错误信息,然后提示用户输入q或者Q退出脚本,输入其他内容则直接用vim打开该shell脚本
#!/bin/bash
sh -n $1 2>/tmp/sh.err
if [ $? -ne 0 ]
then
    cat /tmp/sh.err
    read -p "请输入q/Q退出脚本。" c
    if [ -z "$c"]
    then
        vim $1
        exit 0
    fi
    if [ $c == q ] || [ $c == Q ]
    then
        exit 0
    else
        vim $1
        exit 0
    fi
else
    echo "脚本$1没有语法错误."
fi

例题40

[root@iZwz96qzfgxh9l2rk7esxnZ xiti]# vim 40.sh
#输入一串随机数字,然后按千分位输出
#!/bin/bash
n=`echo $1|wc -L`
for d in `echo $1|sed 's/./& /g'`
do
    n2=$[$n%3]
    if [ $n2 -eq 0 ]
    then
        echo -n ",$d"
    else
        echo -n "$d"
    fi
    n=$[$n-1]
done |sed 's/^,//'
echo
~       

 

posted @ 2019-01-11 22:14  依哈  阅读(123)  评论(0编辑  收藏  举报