1、通过ping命令测试192.168.3.1到192.168.3.5之间的所有主机是否在线,

   如果在线,就显示"ip is up.",其中的IP要换为真正的IP地址,且以绿色显示;

   如果不在线,就显示"ip is down.",其中的IP要换为真正的IP地址,且以红色显示;

要求:分别使用while,until和for(两种形式)循环实现。

while:

#!/bin/bash
IP=1
while [ $IP -le 5 ]; do
    ping -c 2 -w 2 192.168.3.$IP &>/dev/null
    STRING=$?
#    if ping -w 2 -c 2 192.168.3.$IP &>/dev/null;then
     if [ $STRING -eq 0 ];then
       echo -e "\033[32;40m192.168.3.$IP is up.\033[0m"
    else
       echo -e "\033[31;40m192.168.3.$IP is down.\033[0m"
    fi
    let IP=$IP+1
done
#!/bin/bash
#
while true; do
  for I in {1..5};do
    ping -c 2 -w 2 192.168.3.$I &>/dev/null
    if [ $? -eq 0 ]; then
      echo -e "\033[32;40m 192.168.3.$I is UP.\033[0m"
    else
      echo -e "\033[31;40m 192.168.3.$I is Down.\033[0m"
    fi
  done
    break
done

STRING=$?是一个变量赋值

用until实现:

1


#!/bin/bash
IP=1
until [ $IP -gt 5 ]; do
    ping -c 2 -w 2 192.168.3.$IP &>/dev/null
    STRING=$?
#    if ping -w 2 -c 2 192.168.3.$IP &>/dev/null;then
     if [ $STRING -eq 0 ];then
       echo -e "\033[32;40m192.168.3.$IP is up.\033[0m"
    else
       echo -e "\033[31;40m192.168.3.$IP is down.\033[0m"
    fi
    let IP=$IP+1
done

2

#!/bin/bash
#
until false; do
  for I in {1..5};do
    ping -c 2 -w 2 192.168.3.$I &>/dev/null
    if [ $? -eq 0 ]; then
      echo -e "\033[32;40m 192.168.3.$I is UP.\033[0m"
    else
      echo -e "\033[31;40m 192.168.3.$I is Down.\033[0m"
    fi
  done
    break
done


用for实现

1

#!/bin/bash
#
for I in `seq 151 254`; do
  ping -c 2 -w 2 "192.168.0.$I" &>/dev/null
  if [ $? -eq 0 ];then
     echo -e "\033[32;40m192.168.0.$I is up\033[0m"
  else
    echo -e "\033[31;40m192.168.0.$I is down\033[0m"
  fi
done

2

#!/bin/bash
for ((I=1;I<=5;I++ ));do
    ping -c 2 -w 2 192.168.3.$I &>/dev/null
    if [ $? -eq 0 ];then
       echo -e "\033[32;40m192.168.3.$Iis up.\033[0m"
    else
       echo -e "\033[31;40m192.168.3.$Iis down.\033[0m"
    fi
done


echo 详解

linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法

echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
该命令的一般格式为: echo [ -n ] 字符串
其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。

功能说明:显示文字。
语   法:echo [-ne][字符串]或 echo [--help][--version]
补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
参   数:-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
文字输出:
   \a 发出警告声;
   \b 删除前一个字符;
   \c 最后不加上换行符号;
   \f 换行但光标仍旧停留在原来的位置;
   \n 换行且光标移至行首;
   \r 光标移至行首,但不换行;
   \t 插入tab;
   \v 与\f相同;
   \\ 插入\字符;
   \nnn 插入nnn(八进制)所代表的ASCII字符;
–help 显示帮助
–version 显示版本信息


wKioL1lzrYmA38QhAABA8mnEIiE579.jpg