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 顯示版本信息