1. 程式人生 > >shell下用ping 測試一個網路是否通,只顯示結果而不顯示過程輸出

shell下用ping 測試一個網路是否通,只顯示結果而不顯示過程輸出

要求:用ping 測試一個網址但只顯示是否通而不顯示過程輸出

if [ "`ping -c 1  A.B.C.D `" ];  then 
	echo  yes && exit 0
else echo no && exit 0
fi               
如果不管這個地址ping 不ping 得通  都會輸出yes 因為通不通都會有標準輸出(也就是螢幕上有返回值啦!)。


 如果改成如下:
if [ "`ping -c 1  A.B.C.D > /dev/null 2>&1`" ];  then 
	echo  yes && exit 0
else echo no && exit 0
fi         
不管通不通都返回no;因為標準輸出的結果是空,而不管返回值是0還是1


如果改成:

if  ping -c 1 A.B.C.D >/dev/null 2>&1 ; then
        echo yes 
else   echo no! 

fi
只有通才返回yes  
原因:if 是根據ping   的返回值來判斷的,而根標準輸出是否為空無關,儘管此時前ping -c 1 219.229.154.101 >/dev/null 2>&1   在標準輸出上是空,但是ping  的返回值還是 true (即 0);


總結:前兩句都是判斷 []中是否為空 而第三個,則是將ping的返回值給if判斷