欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LINUX Shell脚本编程实例详解(一)上

程序员文章站 2022-07-10 10:26:57
...

LINUX Shell脚本编程实例详解(一)上

ping命令测试网段内主机的2例详解

使用linux已经有10来年了但是一直止于各种服务器的搭建和环境的调优,能力不能得到提升,今天突然下定决心学习Shell脚本编程,因此以网上广为流传的《Shell脚本100例》为基础学习、实验和笔记。

废话不说上栗子。

使用vim shell100-scanip-1.sh命令创建脚本文件

#!/bin/bash
for i in {1..254}
do
        ping -c2 -i0.3 -W1 192.168.18.$i &>/dev/null
        if [ $? -eq 0 ];then
                echo "192.168.18.$i is up"
        else
                echo "192.168.18.$i is down"
        fi
done

解释:

第一句 #!/bin/bash

在shell脚本的开头往往有一句话来定义使用哪种sh解释器来解释脚本。
目前研发送测的shell脚本中主要有以下两种方式:
(1) #!/bin/sh
(2) #!/bin/bash

止于使用sh还是bash来解释的区别后边抽时间专门写一篇文章,这里不在详述

第二句 for i in {1..254}

            do

            ......

           done

是循环结构,for循环类似程序中的for循环,i为循环变量,循环变量值在in{}里依次循环,循环体从do开始,done结束。

第三句ping -c2 -i0.3 -W1 192.168.18.$i &>/dev/null

ping命令参数

-c2:设置完成要求回应的次数;这里设置为2是考虑网络路由的问题导致第一次ping不能返回而第二次ping可以返回的情况(具体原因请自行阅读网络原理)

-i0.3:指定收发信息的间隔时间(秒计),这里的时间是综合考虑ping命令返回超时的时间和每次ping的时间,原则应为:返回超时<i参数<ping命令发送间隔。

-W1:即超时时间(毫秒计),这里表示超时时间为1毫秒,也就是说一毫秒后ping命令结束。

&>/dev/null :表示将标准输出stdout和标准错误输出stderr重定向到null的设备中,也就是说不打印到屏幕上了,而且也不保存文件(放到名叫null的设备中——无底洞永远消失)。

第四句判断语句

if [ $? -eq 0 ];then
           ......     
        else
         ......       
        fi

if判断语句 [ ]中为判断表达式,$?表示最后运行是否成功,成功为0 不成功为1

第五句、第六句

echo "192.168.18.$i is up"、echo "192.168.18.$i is down"表示回显到屏幕上$i表示当前i变量的值

栗子1解释完毕,待续