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判断

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值